Struct tor_protover::Protocols
source · pub struct Protocols { /* private fields */ }
Expand description
A set of supported or required subprotocol versions.
This type supports both recognized subprotocols (listed in ProtoKind), and unrecognized subprotocols (stored by name).
To construct an instance, use the FromStr trait:
use tor_protover::Protocols;
let p: Result<Protocols,_> = "Link=1-3 LinkAuth=2-3 Relay=1-2".parse();
Implementations§
source§impl Protocols
impl Protocols
sourcepub fn supports_known_subver(&self, proto: ProtoKind, ver: u8) -> bool
pub fn supports_known_subver(&self, proto: ProtoKind, ver: u8) -> bool
Check whether a known protocol version is supported.
use tor_protover::*;
let protos: Protocols = "Link=1-3 HSDir=2,4-5".parse().unwrap();
assert!(protos.supports_known_subver(ProtoKind::Link, 2));
assert!(protos.supports_known_subver(ProtoKind::HSDir, 4));
assert!(! protos.supports_known_subver(ProtoKind::HSDir, 3));
assert!(! protos.supports_known_subver(ProtoKind::LinkAuth, 3));
sourcepub fn supports_subver(&self, proto: &str, ver: u8) -> bool
pub fn supports_subver(&self, proto: &str, ver: u8) -> bool
Check whether a protocol version identified by a string is supported.
use tor_protover::*;
let protos: Protocols = "Link=1-3 Foobar=7".parse().unwrap();
assert!(protos.supports_subver("Link", 2));
assert!(protos.supports_subver("Foobar", 7));
assert!(! protos.supports_subver("Link", 5));
assert!(! protos.supports_subver("Foobar", 6));
assert!(! protos.supports_subver("Wombat", 3));
Trait Implementations§
source§impl Display for Protocols
impl Display for Protocols
The Display trait formats a protocol set in the format expected by Tor consensus documents.
use tor_protover::*;
let protos: Protocols = "Link=1,2,3 Foobar=7 Relay=2".parse().unwrap();
assert_eq!(format!("{}", protos),
"Foobar=7 Link=1-3 Relay=2");
source§impl FromStr for Protocols
impl FromStr for Protocols
A Protocols set can be parsed from a string according to the format used in Tor consensus documents.
A protocols set is represented by a space-separated list of
entries. Each entry is of the form Name=Versions
, where Name
is the name of a protocol, and Versions
is a comma-separated
list of version numbers and version ranges. Each version range is
a pair of integers separated by -
.
No protocol name may be listed twice. No version may be listed twice for a single protocol. All versions must be in range 0 through 63 inclusive.