use std::fmt::Debug;
pub fn unwrap_items<T: Debug, E: Debug, I: Iterator<Item = Result<T, E>> + Sized>(
iter: I,
) -> impl Iterator<Item = T> {
iter.map(|v| v.unwrap())
}
#[cfg(test)]
mod tests {
use crate::{events::Event, prelude::*};
#[test]
#[should_panic]
fn panic() {
let events = vec![
Ok(Event::new_delta_note_on_event(100.0f64, 0, 64, 127)),
Ok(Event::new_delta_note_off_event(50.0f64, 0, 64)),
Err(()),
];
let _ = events.into_iter().unwrap_items().collect::<Vec<_>>();
}
#[test]
fn no_panic() {
let events: Vec<Result<_, ()>> = vec![
Ok(Event::new_delta_note_on_event(100.0f64, 0, 64, 127)),
Ok(Event::new_delta_note_off_event(50.0f64, 0, 64)),
];
let changed = events.into_iter().unwrap_items().collect::<Vec<_>>();
assert_eq!(
changed,
vec![
Event::new_delta_note_on_event(100.0f64, 0, 64, 127),
Event::new_delta_note_off_event(50.0f64, 0, 64),
]
)
}
}