From a9b395d90f4a9f7c8a0b12e39faea46029445e00 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sat, 18 Jul 2026 05:46:28 +0800 Subject: feat(picker): add From impls for PickerArgs to Vec conversions Implement `From` for `Vec` and `From<&PickerArgs>` for `Vec<&str>`, enabling seamless conversion from the picker arguments enum to owned or borrowed string vectors. --- arg_picker/src/picker.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'arg_picker/src/picker.rs') diff --git a/arg_picker/src/picker.rs b/arg_picker/src/picker.rs index ecab648..7a60e16 100644 --- a/arg_picker/src/picker.rs +++ b/arg_picker/src/picker.rs @@ -73,6 +73,26 @@ pub enum PickerArgs<'a> { Owned(Vec), } +impl<'a> From> for Vec { + fn from(value: PickerArgs<'a>) -> Self { + match value { + PickerArgs::Slice(items) => items.iter().map(|s| s.to_string()).collect(), + PickerArgs::Vec(items) => items.into_iter().map(|s| s.to_string()).collect(), + PickerArgs::Owned(items) => items, + } + } +} + +impl<'a> From<&'a PickerArgs<'a>> for Vec<&'a str> { + fn from(value: &'a PickerArgs<'a>) -> Self { + match value { + PickerArgs::Slice(items) => items.to_vec(), + PickerArgs::Vec(items) => items.clone(), + PickerArgs::Owned(items) => items.iter().map(|s| s.as_str()).collect(), + } + } +} + impl<'a> Default for PickerArgs<'a> { fn default() -> Self { Self::Vec(vec![]) -- cgit