} else if n == 0 {
Some(".")
} else {
- self.as_str().splitn(labels as usize - n as usize + 1, ".").last()
+ self.as_str().splitn(labels as usize - n as usize + 1, '.').last()
}
}
}
if *s.as_bytes().last().unwrap_or(&0) != b"."[0] { return Err(()); }
if s.len() > 255 { return Err(()); }
if s.chars().any(|c| !c.is_ascii_graphic() || c == '"') { return Err(()); }
- for label in s.split(".") {
+ for label in s.split('.') {
if label.len() > 63 { return Err(()); }
}
}
}
-#[derive(Debug, Clone, PartialEq, Eq, Ord)]
+#[derive(Debug, Clone, PartialEq, Eq)]
/// A text resource record, containing arbitrary text data
pub struct Txt {
/// The name this record is at.
}
/// The wire type for TXT records
pub const TXT_TYPE: u16 = 16;
-impl PartialOrd for Txt {
- fn partial_cmp(&self, o: &Txt) -> Option<Ordering> {
- Some(self.name.cmp(&o.name)
+impl Ord for Txt {
+ fn cmp(&self, o: &Txt) -> Ordering {
+ self.name.cmp(&o.name)
.then_with(|| {
// Compare in wire encoding form, i.e. compare in 255-byte chunks
for i in 1..(self.data.len() / 255) + 2 {
if !slice_cmp.is_eq() { return slice_cmp; }
}
Ordering::Equal
- }))
+ })
}
}
+impl PartialOrd for Txt {
+ fn partial_cmp(&self, o: &Txt) -> Option<Ordering> { Some(self.cmp(o)) }
+}
impl StaticRecord for Txt {
const TYPE: u16 = TXT_TYPE;
fn name(&self) -> &Name { &self.name }
fn read_from_data(name: Name, data: &[u8], _wire_packet: &[u8]) -> Result<Self, ()> {
if data.len() != 4 { return Err(()); }
let mut address = [0; 4];
- address.copy_from_slice(&data);
+ address.copy_from_slice(data);
Ok(A { name, address })
}
fn write_u16_len_prefixed_data<W: Writer>(&self, out: &mut W) {
fn read_from_data(name: Name, data: &[u8], _wire_packet: &[u8]) -> Result<Self, ()> {
if data.len() != 16 { return Err(()); }
let mut address = [0; 16];
- address.copy_from_slice(&data);
+ address.copy_from_slice(data);
Ok(AAAA { name, address })
}
fn write_u16_len_prefixed_data<W: Writer>(&self, out: &mut W) {