diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-07-18 05:46:28 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-07-18 05:46:28 +0800 |
| commit | a9b395d90f4a9f7c8a0b12e39faea46029445e00 (patch) | |
| tree | 479e92f66b7b9e0d0cdf2ede65be5bf6b16cb3f1 /arg_picker | |
| parent | 250f578e6b876d19d3f136fa0ebf91672e0a1b01 (diff) | |
feat(picker): add From impls for PickerArgs to Vec conversions
Implement `From<PickerArgs>` for `Vec<String>` and
`From<&PickerArgs>` for `Vec<&str>`, enabling seamless
conversion from the picker arguments enum to owned or
borrowed string vectors.
Diffstat (limited to 'arg_picker')
| -rw-r--r-- | arg_picker/src/picker.rs | 20 |
1 files changed, 20 insertions, 0 deletions
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<String>), } +impl<'a> From<PickerArgs<'a>> for Vec<String> { + 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![]) |
