#bittorrent #bencode #serialization #file #info #read #parsing-encoding

lava_torrent

用于解析/编码bencode和.torrent文件的库

19个版本 (10个破坏性版本)

0.11.1 2023年5月1日
0.10.0 2023年3月13日
0.8.1 2022年8月4日
0.7.1 2022年7月17日
0.2.1 2018年5月25日

#482解析器实现

Download history 95/week @ 2024-03-11 38/week @ 2024-03-18 12/week @ 2024-03-25 94/week @ 2024-04-01 15/week @ 2024-04-08 50/week @ 2024-04-15 37/week @ 2024-04-22 20/week @ 2024-04-29 17/week @ 2024-05-06 28/week @ 2024-05-13 38/week @ 2024-05-20 24/week @ 2024-05-27 32/week @ 2024-06-03 14/week @ 2024-06-10 64/week @ 2024-06-17 53/week @ 2024-06-24

每月167次下载
用于 2 crates

MIT/Apache

705KB
5.5K SLoC

lava_torrent

crates.io Build Status codecov

lava_torrent 是一个用于解析/编码/创建bencode和.torrent文件的库。

注意: lava_torrent 目前处于维护模式。 仍然会修复错误,但不会发布新功能。如果您需要什么,请随意分支。

快速入门

读取一个torrent(v1)并打印它及其信息散列。

use lava_torrent::torrent::v1::Torrent;

let torrent = Torrent::read_from_file("sample.torrent").unwrap();
println!("{}", torrent);
println!("Info hash: {}", torrent.info_hash());

从目录中的文件创建一个torrent(v1)并保存.torrent文件。

use lava_torrent::torrent::v1::TorrentBuilder;

let torrent = TorrentBuilder::new("dir/", 1048576).build().unwrap();
torrent.write_into_file("sample.torrent").unwrap();

Bencode(反)序列化。

use lava_torrent::bencode::BencodeElem;

let bytes = "d4:spam4:eggse".as_bytes();
let dict = BencodeElem::Dictionary([("spam".to_owned(), "eggs".into())].into());

assert_eq!(BencodeElem::from_bytes(bytes).unwrap()[0], dict);
assert_eq!(dict.encode(), bytes);

assert!(dict.write_into_file("/tmp/foo").is_ok());
assert_eq!(BencodeElem::from_file("/tmp/foo").unwrap()[0], dict);

更多信息

请查看文档

许可:MIT OR Apache-2.0

依赖项

~2.2–3MB
~63K SLoC