amazon_spapi/client/
option_ext.rs1use anyhow::{Result, anyhow};
2use backtrace::Backtrace;
3
4pub trait OptionExt<T> {
5 #[allow(unused)]
6 fn ok(self) -> Result<T>;
7 #[allow(unused)]
8 fn okor(self, err: &'static str) -> anyhow::Result<T>;
9}
10
11impl<T> OptionExt<T> for Option<T> {
12 fn ok(self) -> Result<T> {
13 match self {
14 Some(value) => Ok(value),
15 None => {
16 let bt = Backtrace::new();
17 Err(anyhow!("called `Option::ok()` on a `None` value: {:?}", bt))
18 },
19 }
20 }
21 fn okor(self, err: &'static str) -> anyhow::Result<T> {
22 match self {
23 Some(value) => Ok(value),
24 None => Err(anyhow!("{}", err)),
25 }
26 }
27}