diff options
Diffstat (limited to 'src/validate_ipv4_address.rs')
-rw-r--r-- | src/validate_ipv4_address.rs | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/src/validate_ipv4_address.rs b/src/validate_ipv4_address.rs index 98254df..3c524ce 100644 --- a/src/validate_ipv4_address.rs +++ b/src/validate_ipv4_address.rs @@ -1,10 +1,10 @@ #![warn(clippy::pedantic)] -use super::character_classes::{ - DIGIT, +use super::{ + character_classes::DIGIT, + context::Context, + error::Error, }; -use super::context::Context; -use super::error::Error; struct Shared { num_groups: usize, @@ -20,7 +20,9 @@ impl State { fn finalize(self) -> Result<(), Error> { match self { Self::NotInOctet(_) => Err(Error::TruncatedHost), - Self::ExpectDigitOrDot(state) => Self::finalize_expect_digit_or_dot(state), + Self::ExpectDigitOrDot(state) => { + Self::finalize_expect_digit_or_dot(state) + }, } } @@ -40,20 +42,28 @@ impl State { } fn new() -> Self { - Self::NotInOctet(Shared{ + Self::NotInOctet(Shared { num_groups: 0, octet_buffer: String::new(), }) } - fn next(self, c: char) -> Result<Self, Error> { + fn next( + self, + c: char, + ) -> Result<Self, Error> { match self { Self::NotInOctet(state) => Self::next_not_in_octet(state, c), - Self::ExpectDigitOrDot(state) => Self::next_expect_digit_or_dot(state, c), + Self::ExpectDigitOrDot(state) => { + Self::next_expect_digit_or_dot(state, c) + }, } } - fn next_not_in_octet(state: Shared, c: char) -> Result<Self, Error> { + fn next_not_in_octet( + state: Shared, + c: char, + ) -> Result<Self, Error> { let mut state = state; if DIGIT.contains(&c) { state.octet_buffer.push(c); @@ -63,7 +73,10 @@ impl State { } } - fn next_expect_digit_or_dot(state: Shared, c: char)-> Result<Self, Error> { + fn next_expect_digit_or_dot( + state: Shared, + c: char, + ) -> Result<Self, Error> { let mut state = state; if c == '.' { state.num_groups += 1; @@ -85,13 +98,13 @@ impl State { } pub fn validate_ipv4_address<T>(address: T) -> Result<(), Error> - where T: AsRef<str> +where + T: AsRef<str>, { - address.as_ref() + address + .as_ref() .chars() - .try_fold(State::new(), |machine, c| { - machine.next(c) - })? + .try_fold(State::new(), |machine, c| machine.next(c))? .finalize() } |