midi_toolkit/sequence/common/
unwrap_items.rs1use std::fmt::Debug;
2
3pub fn unwrap_items<T: Debug, E: Debug, I: Iterator<Item = Result<T, E>> + Sized>(
5 iter: I,
6) -> impl Iterator<Item = T> {
7 iter.map(|v| v.unwrap())
8}
9
10#[cfg(test)]
11mod tests {
12 use crate::{
13 events::Event,
14 pipe,
15 sequence::{to_vec, unwrap_items},
16 };
17
18 #[test]
19 #[should_panic]
20 fn panic() {
21 let events = vec![
22 Ok(Event::new_delta_note_on_event(100.0f64, 0, 64, 127)),
23 Ok(Event::new_delta_note_off_event(50.0f64, 0, 64)),
24 Err(()),
25 ];
26
27 pipe! {
28 events.into_iter()
29 |>unwrap_items()
30 |>to_vec()
31 };
32 }
33
34 #[test]
35 fn no_panic() {
36 let events: Vec<Result<_, ()>> = vec![
37 Ok(Event::new_delta_note_on_event(100.0f64, 0, 64, 127)),
38 Ok(Event::new_delta_note_off_event(50.0f64, 0, 64)),
39 ];
40
41 let changed = pipe! {
42 events.into_iter()
43 |>unwrap_items()
44 |>to_vec()
45 };
46
47 assert_eq!(
48 changed,
49 vec![
50 Event::new_delta_note_on_event(100.0f64, 0, 64, 127),
51 Event::new_delta_note_off_event(50.0f64, 0, 64),
52 ]
53 )
54 }
55}