From a5747a843e03bcf80cdf02c39b6b71fc9664e0df Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 31 Mar 2020 16:43:09 +0100 Subject: [PATCH] net_util: Implement FromStr for MacAddr This allows it to be used with str::parse(). Signed-off-by: Rob Bradford --- net_util/src/mac.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/net_util/src/mac.rs b/net_util/src/mac.rs index 36ac0f004..4a032ffa2 100644 --- a/net_util/src/mac.rs +++ b/net_util/src/mac.rs @@ -9,6 +9,7 @@ use rand::Rng; use std::fmt; use std::io; use std::result::Result; +use std::str::FromStr; use serde::de::{Deserialize, Deserializer, Error}; use serde::ser::{Serialize, Serializer}; @@ -120,6 +121,18 @@ impl<'de> Deserialize<'de> for MacAddr { } } +pub enum MacAddrParseError { + InvalidValue(String), +} + +impl FromStr for MacAddr { + type Err = MacAddrParseError; + + fn from_str(s: &str) -> std::result::Result { + MacAddr::parse_str(s).map_err(|_| MacAddrParseError::InvalidValue(s.to_owned())) + } +} + #[cfg(test)] mod tests { extern crate serde_json;