Expand description
Tor version parsing and comparison.
This module provides functionality for parsing and comparing Tor version strings.
Tor versions follow the format specified in the
Tor version-spec:
major.minor.micro[.patch][-status][ (extra)]
§Conceptual Role
The Version type enables:
- Parsing version strings from Tor’s GETINFO responses
- Comparing versions to check feature availability
- Determining if a Tor instance meets minimum requirements
§Version Format
A Tor version string consists of:
- major: Major version number (required)
- minor: Minor version number (required)
- micro: Micro version number (required)
- patch: Patch level (optional, defaults to 0 for comparison)
- status: Release status tag like “alpha”, “beta”, “rc”, “dev” (optional)
- extra: Additional info like git commit (parsed but not stored)
§Comparison Semantics
Versions are compared component by component:
- Major, minor, micro, patch are compared numerically
- Missing patch is treated as 0
- Status tags are compared by release priority:
dev<alpha<beta<rc< (no status/release)- Unknown status tags are treated as release versions
§Example
use stem_rs::Version;
// Parse version strings
let v1 = Version::parse("0.4.7.1-alpha").unwrap();
let v2 = Version::parse("0.4.7.1").unwrap();
// Alpha versions are less than release versions
assert!(v1 < v2);
// Compare against minimum requirements
let minimum = Version::new(0, 4, 5);
assert!(v1 > minimum);
// Build versions programmatically
let v3 = Version::new(0, 4, 8)
.with_patch(1)
.with_status("beta");
assert_eq!(v3.to_string(), "0.4.8.1-beta");§See Also
Controller::get_version- Query Tor’s version- Python Stem equivalent:
stem.version.Version
Structs§
- Version
- A parsed Tor version with comparison support.