use crate::error::LzssError;
use void::{unreachable, Void};
pub trait ResultLzssErrorVoidExt<T>: Sized {
fn void_unwrap(self) -> T;
}
impl<T> ResultLzssErrorVoidExt<T> for Result<T, LzssError<Void, Void>> {
#[inline(always)]
fn void_unwrap(self) -> T {
match self {
Ok(val) => val,
Err(LzssError::ReadError(e)) => unreachable(e),
Err(LzssError::WriteError(e)) => unreachable(e),
}
}
}
pub trait ResultLzssErrorVoidReadExt<E, T>: Sized {
fn void_read_unwrap(self) -> Result<T, E>;
}
impl<E, T> ResultLzssErrorVoidReadExt<E, T> for Result<T, LzssError<Void, E>> {
#[inline]
fn void_read_unwrap(self) -> Result<T, E> {
match self {
Ok(val) => Ok(val),
Err(LzssError::ReadError(e)) => unreachable(e),
Err(LzssError::WriteError(e)) => Err(e),
}
}
}
pub trait ResultLzssErrorVoidWriteExt<E, T>: Sized {
fn void_write_unwrap(self) -> Result<T, E>;
}
impl<E, T> ResultLzssErrorVoidWriteExt<E, T> for Result<T, LzssError<E, Void>> {
#[inline]
fn void_write_unwrap(self) -> Result<T, E> {
match self {
Ok(val) => Ok(val),
Err(LzssError::ReadError(e)) => Err(e),
Err(LzssError::WriteError(e)) => unreachable(e),
}
}
}