2 个不稳定版本

0.2.0 2020年10月23日
0.1.0 2020年10月23日

#2412 in 解析器实现

MIT 许可协议

15KB
340

bencode

使用 Rust 编写的超级快速、零分配的 bencode 解析器。

有多快?

非常快!您可以期望以 0.5 GB/s 的速率解析和提取数据。

快速入门

let bs = "d4:listli1ei2ee4:ping4:ponge".as_bytes(); // Bencode data to parse.

let parser = BenParser::new();

let mut root = parser.parse(bs);

// Iterate through list of numbers
for item in root.get("list").iter_numbers() {
  // ...
}

// Get byte value from dict
let val = root.get("ping").bytes().unwrap();

// The parser is fault tolerant.
let val = root.get("ping").get("some_other").bytes(); // --> Returns None.

性能提示

如果按字典顺序查询字典条目,这个库尤其快。

root.get("a").bytes().unwrap(); // Query bytes
root.get("b").number().unwrap(); // Query number (isize)
root.get("c").get("nested_entry").iter_bytes();

// Caching is also useful.
let c = root.get("c");

c.get("nested_entry1");
c.get("nested_entry2");
// ...

评论

  • 这是我第一个 Rust 项目,所以请随意评论。

无运行时依赖