Compare lazily to always avoid to vector collections and if one of the
first parts mismatch some lower_case calls.
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
}
impl PartialEq for Fqdn {
}
impl PartialEq for Fqdn {
+ // Case-insensitive comparison, as per RFC 952 "ASSUMPTIONS", RFC 1035 sec. 2.3.3. "Character
+ // Case" and RFC 4343 as a whole
fn eq(&self, other: &Self) -> bool {
fn eq(&self, other: &Self) -> bool {
- // Case-insensitive comparison, as per RFC 952 "ASSUMPTIONS",
- // RFC 1035 sec. 2.3.3. "Character Case" and RFC 4343 as a whole
- let a = self
- .parts
- .iter()
- .map(|s| s.to_lowercase())
- .collect::<Vec<String>>();
+ if self.parts.len() != other.parts.len() {
+ return false;
+ }
- .map(|s| s.to_lowercase())
- .collect::<Vec<String>>();
-
- a == b
+ .zip(other.parts.iter())
+ .all(|(a, b)| a.to_lowercase() == b.to_lowercase())