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() {
assert_eq!(parse_bandwidth("9Tbps 420Gbps"), Ok(Bandwidth::new(9420, 0)));
assert_eq!(parse_bandwidth("32Mbps"), Ok(Bandwidth::new(0, 32_000_000)));
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
@BobAnkh
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