A library providing human-readable format parsing and formatting for bandwidth.
Enable serde feature for serde integration.
MSRV: 1.60
More detailed usage can be found on documentation.
For parsing and formatting:
use bandwidth::Bandwidth;use human_bandwidth::Bandwidth;fnmain(){// Parse bandwidth from human-readable string// ------------------------------------------// Parse bandwidth from integer formatassert_eq!(parse_bandwidth("9Tbps 420Gbps"),Ok(Bandwidth::new(9420,0)));assert_eq!(parse_bandwidth("32Mbps"),Ok(Bandwidth::new(0,32_000_000)));// Parse bandwidth from decimal formatassert_eq!(parse_bandwidth("150.024kbps"),Ok(Bandwidth::new(0,150_024)));// The fractional part less than 1bps will always be ignoredassert_eq!(parse_bandwidth("150.02456kbps"),Ok(Bandwidth::new(0,150_024)));// Format bandwidth to human-readable string// -----------------------------------------// By default, the bandwidth will be formatted to// the highest unit possible in decimal formatlet val1 = Bandwidth::new(9420,0);assert_eq!(format_bandwidth(val1).to_string(),"9.42Tbps");let val2 = Bandwidth::new(0,32_000_000);assert_eq!(format_bandwidth(val2).to_string(),"32Mbps");// To format bandwidth in integer format, enable the `display-integer` featurelet 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)]structFoo{#[serde(with = "human_bandwidth::serde")]bandwidth:Bandwidth,}fnmain(){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"}"#)}You should follow our Code of Conduct.
See CONTRIBUTING GUIDELINES for contributing conventions.
Make sure to pass all the tests before submitting your code.
Apache-2.0 © stack-rs