aboutsummaryrefslogtreecommitdiff
path: root/arg_picker
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-07-18 05:46:28 +0800
committer魏曹先生 <1992414357@qq.com>2026-07-18 05:46:28 +0800
commita9b395d90f4a9f7c8a0b12e39faea46029445e00 (patch)
tree479e92f66b7b9e0d0cdf2ede65be5bf6b16cb3f1 /arg_picker
parent250f578e6b876d19d3f136fa0ebf91672e0a1b01 (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.rs20
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![])