From 11fd4e8763d0a1b72ff2ad017d8ab3735e5dc8d3 Mon Sep 17 00:00:00 2001 From: i18n Date: Thu, 4 Sep 2025 17:06:22 +0800 Subject: [PATCH] feat: Add From implementations for MultipleKeys / Key / Value --- src/types/args.rs | 12 ++++++++++++ src/types/multiple.rs | 18 ++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/types/args.rs b/src/types/args.rs index d207e1ff..a141795b 100644 --- a/src/types/args.rs +++ b/src/types/args.rs @@ -295,6 +295,12 @@ impl<'a> From<&'a [u8]> for Key { } } +impl From<&Vec> for Key { + fn from(b: &Vec) -> Self { + Key { key: b.clone().into() } + } +} + impl From for Key { fn from(s: String) -> Self { Key { key: s.into() } @@ -1496,6 +1502,12 @@ impl From> for Value { } } +impl From<&Vec> for Value { + fn from(d: &Vec) -> Self { + Value::Bytes(d.clone().into()) + } +} + impl From for Value { fn from(d: String) -> Self { Value::String(Str::from(d)) diff --git a/src/types/multiple.rs b/src/types/multiple.rs index db2628d7..7f658722 100644 --- a/src/types/multiple.rs +++ b/src/types/multiple.rs @@ -11,8 +11,8 @@ pub struct MultipleKeys { } impl MultipleKeys { - pub fn new() -> MultipleKeys { - MultipleKeys { keys: Vec::new() } + pub fn new() -> Self { + Self { keys: Vec::new() } } pub fn inner(self) -> Vec { @@ -28,6 +28,20 @@ impl MultipleKeys { } } +impl From<&[Vec]> for MultipleKeys { + fn from(keys: &[Vec]) -> Self { + Self { + keys: keys.into_iter().map(|i| Key::from(i)).collect(), + } + } +} + +impl From<&[Key]> for MultipleKeys { + fn from(keys: &[Key]) -> Self { + Self { keys: keys.to_vec() } + } +} + impl From> for MultipleKeys { fn from(key: Option) -> Self { let keys = if let Some(key) = key { vec![key] } else { vec![] };