midi-toolkit-rs 0.3.1

A library for ultra high performance MIDI operations, designed for black MIDI. The library isn't perfect
Documentation
use std::fmt::Debug;

/// Unwraps each item `Result<T, E>` into T, panicking if an error is reached
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),
            ]
        )
    }
}