Fixed how unexpected Option errors were being worded
This commit is contained in:
parent
78b67a02ad
commit
ac66ebf6cc
@ -105,16 +105,19 @@ impl<T, E: error::Error> Mappable<T> for result::Result<T, E> {
|
||||
}
|
||||
}
|
||||
|
||||
static OPTION_NONE_ERROR: &str = "expected Some but got None";
|
||||
#[derive(thiserror::Error, Debug)]
|
||||
enum OptionError {
|
||||
#[error("required but not given")]
|
||||
None,
|
||||
}
|
||||
|
||||
impl<T> Mappable<T> for Option<T> {
|
||||
fn or_unexpected(self) -> Result<T> {
|
||||
self.ok_or(Error::from(OPTION_NONE_ERROR)).or_unexpected()
|
||||
self.ok_or(OptionError::None).or_unexpected()
|
||||
}
|
||||
|
||||
fn or_unexpected_while<D: fmt::Display>(self, prefix: D) -> Result<T> {
|
||||
self.ok_or(Error::from(OPTION_NONE_ERROR))
|
||||
.or_unexpected_while(prefix)
|
||||
self.ok_or(OptionError::None).or_unexpected_while(prefix)
|
||||
}
|
||||
|
||||
fn map_unexpected_while<F, D>(self, f: F) -> Result<T>
|
||||
@ -122,8 +125,7 @@ impl<T> Mappable<T> for Option<T> {
|
||||
F: FnOnce() -> D,
|
||||
D: fmt::Display,
|
||||
{
|
||||
self.ok_or(Error::from(OPTION_NONE_ERROR))
|
||||
.map_unexpected_while(f)
|
||||
self.ok_or(OptionError::None).map_unexpected_while(f)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user