preview_callback/
preview_callback.rs1use 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}