1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
pub mod tcp; mod tests; pub mod udp; pub struct Range { pub min: u16, pub max: u16, } type Port = u16; impl Default for Range { fn default() -> Self { Range { min: 1024, max: 65535, } } } /// A trait for defining behaviour on the lib's functions pub trait Ops { /// Returns any port in default range. /// /// # Arguments ///* `host` - a string slice pointing to the hostname to test the port availability on. /// /// # Examples ///``` ///use get_port::tcp::TcpPort; ///use get_port::udp::UdpPort; ///use get_port::Ops; /// ///let tcp_port = TcpPort::any("127.0.0.1").unwrap(); ///let udp_port = UdpPort::any("127.0.0.1").unwrap(); /// ``` fn any(host: &str) -> Option<Port>; /// Returns any port in given range. /// /// # Arguments /// * `host` - a string slice pointing to the hostname to test the port availability on. /// * `r` - the Range to choose a port from. /// /// # Examples /// ``` /// use get_port::tcp::TcpPort; /// use get_port::{Ops, Range}; /// use get_port::udp::UdpPort; /// /// let tcp_port = TcpPort::in_range("127.0.0.1", Range {min: 6000, max: 7000 }).unwrap(); /// let udp_port = UdpPort::in_range("127.0.0.1", Range {min: 8000, max: 9000 }).unwrap(); /// ``` fn in_range(host: &str, r: Range) -> Option<Port>; /// Returns any port from the supplied list. /// /// # Arguments /// * `host` - a string slice pointing to the hostname to test the port availability on. /// * `v` - a vector of Ports (`u16`) to choose from. /// /// # Examples /// ``` /// use get_port::tcp::TcpPort; /// use get_port::Ops; /// use get_port::udp::UdpPort; /// /// let tcp_port = TcpPort::from_list("127.0.0.1", vec![5000, 6000]).unwrap(); /// let udp_port = UdpPort::from_list("127.0.0.1", vec![5000, 6000]).unwrap(); /// ``` fn from_list(host: &str, v: Vec<Port>) -> Option<Port>; /// Returns any port from the default range except for the ones in the supplied list. /// /// # Arguments /// * `host` - a string slice pointing to the hostname to test the port availability on. /// * `v` - a vector of Ports (`u16`) to exclude. /// /// # Examples /// ``` /// use get_port::tcp::TcpPort; /// use get_port::Ops; /// use get_port::udp::UdpPort; /// /// let tcp_port = TcpPort::except("127.0.0.1", vec![1456, 6541]).unwrap(); /// let udp_port = UdpPort::except("127.0.0.1", vec![1456, 6541]).unwrap(); /// ``` fn except(host: &str, v: Vec<Port>) -> Option<Port>; /// Returns any port from the supplied range except for the ones in the supplied list. /// /// # Arguments /// * `host` - a string slice pointing to the hostname to test the port availability on. /// * `r` - the Range to choose a port from. /// * `v` - a vector of Ports (`u16`) to exclude. /// /// # Examples /// ``` /// use get_port::tcp::TcpPort; /// use get_port::{Ops, Range}; /// use get_port::udp::UdpPort; /// /// let tcp_port = TcpPort::in_range_except("127.0.0.1", Range { min: 6000, max: 7000 }, vec![6500]).unwrap(); /// let udp_port = UdpPort::in_range_except("127.0.0.1", Range { min: 6000, max: 7000 }, vec![6500]).unwrap(); /// ``` fn in_range_except(host: &str, r: Range, v: Vec<Port>) -> Option<Port>; /// Utility function to check whether a port is available or not. fn is_port_available(host: &str, p: Port) -> bool; }