Mercurial > crates > systemd-socket
diff src/resolv_addr.rs @ 28:cfef4593e207
Run `cargo fmt`.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sat, 19 Apr 2025 01:33:50 -0400 |
parents | 66c0e10c89fc |
children |
line wrap: on
line diff
--- a/src/resolv_addr.rs Fri Feb 28 23:15:59 2025 +0100 +++ b/src/resolv_addr.rs Sat Apr 19 01:33:50 2025 -0400 @@ -1,5 +1,5 @@ +use std::fmt; use thiserror::Error; -use std::fmt; #[derive(Debug, PartialEq)] pub(crate) struct ResolvAddr(String); @@ -9,7 +9,9 @@ &self.0 } - pub(crate) fn try_from_generic<T: std::ops::Deref<Target=str> + Into<String>>(string: T) -> Result<Self, ResolvAddrError> { + pub(crate) fn try_from_generic<T: std::ops::Deref<Target = str> + Into<String>>( + string: T, + ) -> Result<Self, ResolvAddrError> { // can't use a combinator due to borrowing let colon = match string.rfind(':') { Some(colon) => colon, @@ -19,12 +21,18 @@ let (hostname, port) = string.split_at(colon); if let Err(error) = port[1..].parse::<u16>() { - return Err(ResolvAddrError::InvalidPort { string: string.into(), error, }); + return Err(ResolvAddrError::InvalidPort { + string: string.into(), + error, + }); } let len = hostname.len(); if len > 253 { - return Err(ResolvAddrError::TooLong { string: string.into(), len, } ) + return Err(ResolvAddrError::TooLong { + string: string.into(), + len, + }); } let mut label_start = 0usize; @@ -33,17 +41,30 @@ match c { '.' => { if i - label_start == 0 { - return Err(ResolvAddrError::EmptyLabel { string: string.into(), label_start, }); + return Err(ResolvAddrError::EmptyLabel { + string: string.into(), + label_start, + }); } label_start = i + 1; - }, + } 'a'..='z' | 'A'..='Z' | '0'..='9' | '-' => (), - _ => return Err(ResolvAddrError::InvalidCharacter { string: string.into(), c, pos: i, }), + _ => { + return Err(ResolvAddrError::InvalidCharacter { + string: string.into(), + c, + pos: i, + }) + } } if i - label_start > 63 { - return Err(ResolvAddrError::LongLabel { string: string.into(), label_start, label_end: i, }); + return Err(ResolvAddrError::LongLabel { + string: string.into(), + label_start, + label_end: i, + }); } } @@ -57,19 +78,25 @@ } } - #[derive(Debug, Error)] pub(crate) enum ResolvAddrError { #[error("hostname {string} has {len} character which exceeds the limit of 253")] TooLong { string: String, len: usize }, #[error("invalid character {c} in hostname {string} at position {pos}")] - InvalidCharacter { string: String, pos: usize, c: char, }, + InvalidCharacter { string: String, pos: usize, c: char }, #[error("hostname {string} contains a label {} at position {label_start} which is {} characters long - more than the limit 63", &string[(*label_start)..(*label_end)], label_end - label_start)] - LongLabel { string: String, label_start: usize, label_end: usize, }, + LongLabel { + string: String, + label_start: usize, + label_end: usize, + }, #[error("hostname {string} contains an empty label at position {label_start}")] - EmptyLabel { string: String, label_start: usize, }, + EmptyLabel { string: String, label_start: usize }, #[error("the address {0} is missing a port")] MissingPort(String), #[error("failed to parse port numer in the address {string}")] - InvalidPort { string: String, error: std::num::ParseIntError, }, + InvalidPort { + string: String, + error: std::num::ParseIntError, + }, }