Skip to content

Repository files navigation

Human Bandwidth

github-repocrates.iodocs.rsLICENSE Apache-2.0

A library providing human-readable format parsing and formatting for bandwidth. Enable serde feature for serde integration.

MSRV: 1.60

Examples

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"}"#)}

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

About

A parser and formatter for Bandwidth speed in human readable format

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages