diff --git a/src/stdlib/ip_cidr_contains.rs b/src/stdlib/ip_cidr_contains.rs index 65b8e3e518..2269f698ce 100644 --- a/src/stdlib/ip_cidr_contains.rs +++ b/src/stdlib/ip_cidr_contains.rs @@ -1,17 +1,17 @@ use crate::compiler::prelude::*; use cidr_utils::cidr::IpCidr; +use std::net::IpAddr; +use std::str::FromStr; fn ip_cidr_contains(value: Value, cidr: Value) -> Resolved { - let value = value - .try_bytes_utf8_lossy()? - .parse() - .map_err(|err| format!("unable to parse IP address: {err}"))?; + let bytes = value.try_bytes_utf8_lossy()?; + let ip_addr = + IpAddr::from_str(&bytes).map_err(|err| format!("unable to parse IP address: {err}"))?; let cidr = { let cidr = cidr.try_bytes_utf8_lossy()?; - - IpCidr::from_str(cidr).map_err(|err| format!("unable to parse CIDR: {err}"))? + IpCidr::from_str(&cidr).map_err(|err| format!("unable to parse CIDR: {err}"))? }; - Ok(cidr.contains(value).into()) + Ok(cidr.contains(&ip_addr).into()) } #[derive(Clone, Copy, Debug)]