crax_utils 0.1.8

Some common utils
Documentation
pub trait OptionExt<T> {
    fn unpack(self) -> T;

    fn unpack_ref(&self) -> &T;

    fn unpack_ref_mut(&mut self) -> &mut T;
}

impl<T> OptionExt<T> for Option<T> {
    /// Similar to `unwrap`, but with a more descriptive panic message.
    ///
    /// ```ignore
    /// None::<usize>.unwrap();
    /// // called `Option::unwrap()` on a `None` value
    ///
    /// None::<usize>.unpack();
    /// // Got `None` value when calling `OptionExt::unpack()` on `Option<usize>`
    /// ```
    #[track_caller]
    fn unpack(self) -> T {
        match self {
            Some(v) => v,
            None => panic!("Got `None` value when calling `OptionExt::unpack()`",),
        }
    }

    /// Shorthand for `self.as_ref().unpack()`.
    fn unpack_ref(&self) -> &T {
        self.as_ref().unpack()
    }

    /// Shorthand for `self.as_mut().unpack()`.
    fn unpack_ref_mut(&mut self) -> &mut T {
        self.as_mut().unpack()
    }
}