diff options
Diffstat (limited to 'arg_picker/src/builtin/pick_ip_attr.rs')
| -rw-r--r-- | arg_picker/src/builtin/pick_ip_attr.rs | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/arg_picker/src/builtin/pick_ip_attr.rs b/arg_picker/src/builtin/pick_ip_attr.rs index d68fa15..57ac80e 100644 --- a/arg_picker/src/builtin/pick_ip_attr.rs +++ b/arg_picker/src/builtin/pick_ip_attr.rs @@ -4,36 +4,33 @@ use crate::SinglePickable; impl SinglePickable for IpAddr { fn pick_single(str: Option<&str>) -> crate::PickerArgResult<Self> { - match str { - Some(s) => match s.parse::<IpAddr>() { - Ok(addr) => crate::PickerArgResult::Parsed(addr), - Err(_) => crate::PickerArgResult::NotFound, - }, - None => crate::PickerArgResult::NotFound, - } + str.map_or(crate::PickerArgResult::NotFound, |s| { + s.parse::<Self>() + .map_or(crate::PickerArgResult::NotFound, |addr| { + crate::PickerArgResult::Parsed(addr) + }) + }) } } impl SinglePickable for Ipv4Addr { fn pick_single(str: Option<&str>) -> crate::PickerArgResult<Self> { - match str { - Some(s) => match s.parse::<Ipv4Addr>() { - Ok(addr) => crate::PickerArgResult::Parsed(addr), - Err(_) => crate::PickerArgResult::NotFound, - }, - None => crate::PickerArgResult::NotFound, - } + str.map_or(crate::PickerArgResult::NotFound, |s| { + s.parse::<Self>() + .map_or(crate::PickerArgResult::NotFound, |addr| { + crate::PickerArgResult::Parsed(addr) + }) + }) } } impl SinglePickable for Ipv6Addr { fn pick_single(str: Option<&str>) -> crate::PickerArgResult<Self> { - match str { - Some(s) => match s.parse::<Ipv6Addr>() { - Ok(addr) => crate::PickerArgResult::Parsed(addr), - Err(_) => crate::PickerArgResult::NotFound, - }, - None => crate::PickerArgResult::NotFound, - } + str.map_or(crate::PickerArgResult::NotFound, |s| { + s.parse::<Self>() + .map_or(crate::PickerArgResult::NotFound, |addr| { + crate::PickerArgResult::Parsed(addr) + }) + }) } } |
