selector/
selector.rs

1extern crate skim;
2use skim::prelude::*;
3
4struct BasicSelector {
5    pub pat: String,
6}
7
8impl Selector for BasicSelector {
9    fn should_select(&self, _index: usize, item: &dyn SkimItem) -> bool {
10        item.text().contains(&self.pat)
11    }
12}
13
14pub fn main() {
15    let selector = BasicSelector {
16        pat: String::from("examples"),
17    };
18    let options = SkimOptionsBuilder::default()
19        .multi(true)
20        .selector(Some(Rc::from(selector)))
21        .query(Some(String::from("skim/")))
22        .build()
23        .unwrap();
24
25    let selected_items = Skim::run_with(options, None)
26        .map(|out| out.selected_items)
27        .unwrap_or_default();
28
29    for item in selected_items.iter() {
30        println!("{}", item.output());
31    }
32}