2 releases
0.1.1 | Jun 25, 2024 |
---|---|
0.1.0 | Jun 25, 2024 |
#730 in Network programming
Used in netem-trace
29KB
535 lines
Human Bandwidth
A library providing human-readable format parsing and formating for bandwidth. Enable serde
feature for serde integration.
MSRV: 1.60
Examples
More detailed usage can be found on documentation.
For parsing and formating:
use bandwidth::Bandwidth;
use human_bandwidth::Bandwidth;
fn main() {
// Parse bandwidth from human-readable string
assert_eq!(parse_bandwidth("9Tbps 420Gbps"), Ok(Bandwidth::new(9420, 0)));
assert_eq!(parse_bandwidth("32Mbps"), Ok(Bandwidth::new(0, 32_000_000)));
// Format bandwidth to human-readable string
let val1 = Bandwidth::new(9420, 0);
assert_eq!(format_bandwidth(val1).to_string(), "9Tbps 420Gbps");
let val2 = Bandwidth::new(0, 32_000_000);
assert_eq!(format_bandwidth(val2).to_string(), "32Mbps");
}
To integrate with serde
:
use serde::{Serialize, Deserialize};
use bandwidth::Bandwidth;
#[derive(Serialize, Deserialize)]
struct Foo {
#[serde(with = "human_bandwidth::serde")]
bandwidth: Bandwidth,
}
fn main () {
let json = r#"{"bandwidth": "1kbps"}"#;
let foo = serde_json::from_str::<Foo>(json).unwrap();
assert_eq!(foo.bandwidth, Bandwidth::from_kbps(1));
let reverse = serde_json::to_string(&foo).unwrap();
assert_eq!(reverse, r#"{"bandwidth":"1kbps"}"#)
}
Maintainer
How to contribute
You should follow our Code of Conduct.
See CONTRIBUTING GUIDELINES for contributing conventions.
Make sure to pass all the tests before submitting your code.
Contributors
LICENSE
Apache-2.0 © stack-rs
Credits
Dependencies
~225KB