preview_callback/
preview_callback.rs

1use std::io::Cursor;
2
3use skim::prelude::*;
4
5pub fn main() {
6    env_logger::init();
7    let options = SkimOptionsBuilder::default()
8        .multi(true)
9        .preview_fn(Some(PreviewCallback::from(|items: Vec<Arc<dyn SkimItem>>| {
10            items
11                .iter()
12                .map(|s| s.text().to_ascii_uppercase().into())
13                .collect::<Vec<_>>()
14        })))
15        .build()
16        .unwrap();
17    let item_reader = SkimItemReader::default();
18
19    let input = "aaaaa\nbbbb\nccc";
20    let items = item_reader.of_bufread(Cursor::new(input));
21    let selected_items = Skim::run_with(options, Some(items))
22        .map(|out| out.selected_items)
23        .unwrap_or_default();
24
25    for item in selected_items.iter() {
26        println!("{}", item.output());
27    }
28}