From ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a Mon Sep 17 00:00:00 2001 From: rtkay123 Date: Sun, 1 Feb 2026 13:33:07 +0200 Subject: feat: conn to db --- src/config/port.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/config/port.rs (limited to 'src/config/port.rs') diff --git a/src/config/port.rs b/src/config/port.rs new file mode 100644 index 0000000..01e305b --- /dev/null +++ b/src/config/port.rs @@ -0,0 +1,42 @@ +use std::ops::RangeInclusive; + +const PORT_RANGE: RangeInclusive = 1..=65535; + +pub fn port_in_range(s: &str) -> Result { + let port = s + .parse() + .map_err(|_| format!("{s} is not a valid port number"))?; + + if PORT_RANGE.contains(&port) { + Ok(port as u16) + } else { + Err(format!( + "port not in range {}-{}", + PORT_RANGE.start(), + PORT_RANGE.end() + )) + } +} + +#[cfg(test)] +mod tests { + use rand::Rng; + + use super::*; + + #[test] + fn in_port_range() { + let mut rng = rand::rng(); + let num = rng.random_range(PORT_RANGE); + + assert!(port_in_range(&num.to_string()).is_ok()); + } + + #[test] + fn outside_port_range() { + let mut rng = rand::rng(); + let num = rng.random_range((65535 + 1)..=usize::MAX); + + assert!(port_in_range(&num.to_string()).is_err()); + } +} -- cgit v1.2.3