Expand description
RF frequency, wavelength, and frequency-range types.
Frequency and Wavelength are thin wrappers around uom
SI quantities. They add ham-radio-centric constructors, a smart Display that chooses
the most readable unit, and bidirectional conversion via λ = c / f.
FrequencyRange represents a contiguous band segment and supports overlap and
containment queries.
§Display formats
The default formatter ({}) always uses MHz. The alternate formatter ({:#}) selects
the most natural unit based on the value:
use rfham_core::frequency::Frequency;
assert_eq!(format!("{:#}", Frequency::hertz(440.0)), "440 hertz");
assert_eq!(format!("{:#}", Frequency::kilohertz(7.074)), "7.074 kilohertz");
assert_eq!(format!("{:#}", Frequency::megahertz(146.52)), "146.52 megahertz");
assert_eq!(format!("{:#}", Frequency::gigahertz(2.4)), "2.4 gigahertz");§Examples
use rfham_core::frequency::{Frequency, FrequencyRange};
// Construct and display
let f = Frequency::megahertz(144.0);
assert_eq!(f.to_string(), "144 MHz");
// Convert to wavelength (~2 m band)
let wl = f.to_wavelength();
assert!((wl.value() - 2.082).abs() < 0.001);
// Range queries
let band = FrequencyRange::new_mhz(144.0, 148.0);
assert!(band.contains(Frequency::megahertz(146.52)));
assert!(!band.contains(Frequency::megahertz(150.0)));