option_builder/
option_builder.rs

1extern crate skim;
2use skim::prelude::*;
3use std::io::Cursor;
4
5pub fn main() {
6    let options = SkimOptionsBuilder::default()
7        .height(Some("50%"))
8        .multi(true)
9        .build()
10        .unwrap();
11    let item_reader = SkimItemReader::default();
12
13    //==================================================
14    // first run
15    let input = "aaaaa\nbbbb\nccc";
16    let (items, opt_ingest_handle) = item_reader.of_bufread(Box::new(Cursor::new(input)));
17    let selected_items = Skim::run_with(&options, Some(items))
18        .map(|out| out.selected_items)
19        .unwrap_or_else(Vec::new);
20
21    for item in selected_items.iter() {
22        println!("{}", item.output());
23    }
24
25    if let Some(handle) = opt_ingest_handle {
26        let _ = handle.join();
27    }
28
29    //==================================================
30    // second run
31    let input = "11111\n22222\n333333333";
32    let (items, opt_ingest_handle) = item_reader.of_bufread(Box::new(Cursor::new(input)));
33    let selected_items = Skim::run_with(&options, Some(items))
34        .map(|out| out.selected_items)
35        .unwrap_or_else(Vec::new);
36
37    for item in selected_items.iter() {
38        println!("{}", item.output());
39    }
40
41    if let Some(handle) = opt_ingest_handle {
42        let _ = handle.join();
43    }
44}