diff options
| author | rtkay123 <dev@kanjala.com> | 2026-02-01 13:33:07 +0200 |
|---|---|---|
| committer | rtkay123 <dev@kanjala.com> | 2026-02-01 13:33:07 +0200 |
| commit | ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a (patch) | |
| tree | 953f6c49f8affd667ec740a949b2d93f82b7d31b /src/config/port.rs | |
| parent | 6a9d21bc87f8a738e14f27a1305bf04d0c4b7a0c (diff) | |
| download | sellershut-ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a.tar.bz2 sellershut-ce65d9eeafcd1f9d5c3adef1c9b1af6258ee711a.zip | |
feat: conn to db
Diffstat (limited to 'src/config/port.rs')
| -rw-r--r-- | src/config/port.rs | 42 |
1 files changed, 42 insertions, 0 deletions
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<usize> = 1..=65535; + +pub fn port_in_range(s: &str) -> Result<u16, String> { + 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()); + } +} |
