Skip to content

Instantly share code, notes, and snippets.

@Yoplitein
Created April 25, 2026 06:06
Show Gist options
  • Select an option

  • Save Yoplitein/f4fa4c18f591f4c225f33306f28296f3 to your computer and use it in GitHub Desktop.

Select an option

Save Yoplitein/f4fa4c18f591f4c225f33306f28296f3 to your computer and use it in GitHub Desktop.
pub trait UnreachableUnwrapOption<Res> {
fn unreachable_unwrap(self) -> Res;
fn unreachable_expect(self, message: &str) -> Res;
fn unreachable_expect_lazy(self, message: impl FnOnce() -> String) -> Res;
}
impl<Res> UnreachableUnwrapOption<Res> for Option<Res> {
#[inline(always)]
fn unreachable_unwrap(self) -> Res {
let Some(res) = self else { unreachable!() };
res
}
#[inline(always)]
fn unreachable_expect(self, message: &str) -> Res {
let Some(res) = self else {
unreachable!("{message}")
};
res
}
#[inline(always)]
fn unreachable_expect_lazy(self, message: impl FnOnce() -> String) -> Res {
let Some(res) = self else {
unreachable!("{}", message())
};
res
}
}
pub trait UnreachableUnwrapResult<Res, Err> {
fn unreachable_unwrap(self) -> Res;
fn unreachable_expect(self, message: &str) -> Res;
fn unreachable_expect_lazy(self, message: impl FnOnce(Err) -> String) -> Res;
fn unreachable_unwrap_err(self) -> Err;
fn unreachable_expect_err(self, message: &str) -> Err;
fn unreachable_expect_err_lazy(self, message: impl FnOnce(Res) -> String) -> Err;
}
impl<Res, Err> UnreachableUnwrapResult<Res, Err> for Result<Res, Err> {
#[inline(always)]
fn unreachable_unwrap(self) -> Res {
let Ok(res) = self else { unreachable!() };
res
}
#[inline(always)]
fn unreachable_expect(self, message: &str) -> Res {
let Ok(res) = self else {
unreachable!("{message}")
};
res
}
#[inline(always)]
fn unreachable_expect_lazy(self, message: impl FnOnce(Err) -> String) -> Res {
match self {
Ok(res) => res,
Err(err) => unreachable!("{}", message(err)),
}
}
#[inline(always)]
fn unreachable_unwrap_err(self) -> Err {
let Err(res) = self else { unreachable!() };
res
}
#[inline(always)]
fn unreachable_expect_err(self, message: &str) -> Err {
let Err(res) = self else {
unreachable!("{message}")
};
res
}
#[inline(always)]
fn unreachable_expect_err_lazy(self, message: impl FnOnce(Res) -> String) -> Err {
match self {
Ok(res) => unreachable!("{}", message(res)),
Err(err) => err,
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment