free_launch/
selected_items.rs

1use crate::selectable::SelectableItem;
2
3#[derive(Debug)]
4pub struct SelectedItems<'a, T> {
5    items: Vec<&'a SelectableItem<T>>,
6}
7
8impl<'a, T> SelectedItems<'a, T> {
9    pub fn from_refs(items: Vec<&'a SelectableItem<T>>) -> Self {
10        Self { items }
11    }
12
13    /// Returns a Vec of references to the inner values from Existing selected items
14    pub fn existing_values(&self) -> Vec<&T> {
15        self.items.iter().filter_map(|item| item.value()).collect()
16    }
17
18    /// Returns a Vec of string references from Requested selected items
19    pub fn requested_values(&self) -> Vec<&str> {
20        self.items
21            .iter()
22            .filter_map(|item| item.requested_value().map(|s| s.as_str()))
23            .collect()
24    }
25}