return custom error from `Network::from_str`
This commit is contained in:
parent
b6e3028ccf
commit
d1b7dff094
|
@ -106,8 +106,20 @@ impl Network {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// An error in parsing network string.
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
|
pub struct ParseNetworkError(String);
|
||||||
|
|
||||||
|
impl fmt::Display for ParseNetworkError {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||||||
|
write_err!(f, "failed to parse {} as network", self.0; self)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl_std_error!(ParseNetworkError);
|
||||||
|
|
||||||
impl FromStr for Network {
|
impl FromStr for Network {
|
||||||
type Err = io::Error;
|
type Err = ParseNetworkError;
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
use Network::*;
|
use Network::*;
|
||||||
|
@ -117,13 +129,7 @@ impl FromStr for Network {
|
||||||
"testnet" => Testnet,
|
"testnet" => Testnet,
|
||||||
"signet" => Signet,
|
"signet" => Signet,
|
||||||
"regtest" => Regtest,
|
"regtest" => Regtest,
|
||||||
_ => {
|
_ => return Err(ParseNetworkError(s.to_owned()))
|
||||||
#[cfg(feature = "std")]
|
|
||||||
let message = format!("Unknown network (type {})", s);
|
|
||||||
#[cfg(not(feature = "std"))]
|
|
||||||
let message = "Unknown network";
|
|
||||||
return Err(io::Error::new(io::ErrorKind::InvalidInput, message));
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
Ok(network)
|
Ok(network)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue