option_builder/
option_builder.rs

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