#bencode #serialization #serde #deserialize #serde-derive

torrust-serde-bencode

一个基于Serde的Rust Bencode编码/解码库

1个不稳定版本

0.2.3 2023年9月25日

#9 in #序列化

Download history 77/week @ 2024-03-13 48/week @ 2024-03-20 44/week @ 2024-03-27 82/week @ 2024-04-03 118/week @ 2024-04-10 128/week @ 2024-04-17 79/week @ 2024-04-24 34/week @ 2024-05-01 49/week @ 2024-05-08 137/week @ 2024-05-15 73/week @ 2024-05-22 105/week @ 2024-05-29 84/week @ 2024-06-05 96/week @ 2024-06-12 64/week @ 2024-06-19 198/week @ 2024-06-26

450 每月下载量

MIT 许可证

42KB
1K SLoC

Torrust Serde Bencode

一个基于 SerdeBencode 编码/解码库。

来源:由于上游仓库不活跃,从 https://github.com/toby/serde-bencode 分支。

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
torrust-serde-bencode = "^0.2.3"
serde = "^1.0.0"
serde_derive = "^1.0.0"

用法

这是一个来自 examples/parse_torrent.rs 的简化的 .torrent 解析示例。如果您将此包编译为二进制文件,它将打印出任何发送到stdin的Torrent的元数据。


lib.rs:

此包是一个Rust库,用于使用 Serde 序列化框架处理bencode数据。

示例

use serde_derive::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
struct Product {
    name: String,
    price: u32,
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let apple = Product {
        name: "Apple".to_string(),
        price: 130,
    };

    let serialized = serde_bencode::to_string(&apple)?;

    assert_eq!(serialized, "d4:name5:Apple5:pricei130ee".to_string());

    let deserialized: Product = serde_bencode::from_str(&serialized)?;

    assert_eq!(
        deserialized,
        Product {
            name: "Apple".to_string(),
            price: 130,
        }
    );

    Ok(())
}

依赖项

~140–385KB