#带宽 # #serde #网络 #数据结构

human-bandwidth

一个用于以人类可读格式表示带宽速度的库

2 个版本

0.1.1 2024 年 6 月 25 日
0.1.0 2024 年 6 月 25 日

1474网络编程 中排名

Download history 247/week @ 2024-06-24

每月 247 次下载
用于 netem-trace

Apache-2.0

29KB
535 代码行

Human Bandwidth

github-repo crates.io docs.rs LICENSE Apache-2.0

一个提供对带宽进行人类可读格式解析和格式化的库 bandwidth。启用 serde 功能以集成 serde

MSRV: 1.60

示例

更详细的用法可以在 文档 中找到。

解析和格式化

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

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

维护者

@BobAnkh

如何贡献

您应该遵循我们的 行为准则

有关贡献约定,请参阅 贡献指南

提交代码前请确保所有测试都通过。

贡献者

许可协议

Apache-2.0 © stack-rs

致谢

依赖项

~235KB