rusty_cli/inputs/
multi_select_input.rs

1use dialoguer::MultiSelect;
2
3pub struct MultiSelectInput {}
4
5impl MultiSelectInput {
6
7    /// Gets all selected values from the input
8    pub fn get_selected_values(items: Vec<String>) -> Vec<String> {
9        let mut values = vec![];
10        let indexes = MultiSelectInput::get_selected_indexes(items.clone());
11        for index in indexes {
12            values.push(items.get(index).unwrap().to_string());
13        }
14        values
15    }
16
17    /// Gets all selected indexes from the input
18    pub fn get_selected_indexes(items: Vec<String>) -> Vec<usize> {
19        MultiSelect::new()
20            .items(&items)
21            .interact()
22            .unwrap()
23    }
24}