summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-01-29 02:22:15 -0600
committerToby Vincent <tobyv@tobyvin.dev>2024-01-29 02:22:31 -0600
commitd749e1cb17744493c7a9e43e971518c8b12235b7 (patch)
treef2eacab0d366fb8431d564591a9aad35824425cf /src/lib.rs
parentdcfd85099c9d136afc3f22dcde90583694e3d4f3 (diff)
feat: reimplement exclude option
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 26636f7..51ade36 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,6 +1,8 @@
use std::{
+ convert::Infallible,
fmt::Display,
net::{IpAddr, Ipv4Addr, Ipv6Addr},
+ str::FromStr,
};
pub mod netlink;
@@ -12,6 +14,14 @@ pub enum Host {
Hostname(String),
}
+impl FromStr for Host {
+ type Err = Infallible;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ Ok(IpAddr::from_str(s).map_or_else(|_| s.to_string().into(), Host::from))
+ }
+}
+
impl From<IpAddr> for Host {
fn from(value: IpAddr) -> Self {
match dns_lookup::lookup_addr(&value) {