use derive_more::Display;
use std::fmt::Debug;
#[derive(Debug, Display)]
pub enum Never {}
impl std::error::Error for Never {}
pub trait InfallibleUnwrap<T> {
fn infallible_unwrap(self) -> T;
}
impl<T> InfallibleUnwrap<T> for std::result::Result<T, Never> {
fn infallible_unwrap(self) -> T {
self.unwrap()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_infallible_unwrap() {
#![allow(clippy::unit_cmp)]
let result: Result<i64, Never> = Ok(4);
assert_eq!(4, result.infallible_unwrap());
let result: Result<(), Never> = Ok(());
assert_eq!((), result.infallible_unwrap());
}
}