basic/
basic.rs

1use matchmaker::nucleo::worker::Worker;
2use matchmaker::{Matchmaker, MatchmakerError, Result};
3
4#[tokio::main]
5async fn main() -> Result<()> {
6    let items = vec!["item1", "item2", "item3"];
7
8    let worker = Worker::new_single();
9    worker.append(items);
10    let identifier = Worker::clone_identifier;
11
12    let mm = Matchmaker::new(worker, identifier);
13
14    match mm.pick().await {
15        Ok(iter) => {
16            for s in iter {
17                println!("{s}");
18            }
19        }
20        Err(err) => {
21            if let Some(e) = err.downcast_ref::<MatchmakerError>()
22                && matches!(e, MatchmakerError::Abort(1))
23            {
24                eprintln!("cancelled");
25            } else {
26                eprintln!("Error: {err}");
27            }
28        }
29    }
30
31    Ok(())
32}