#bencode-parser #bencode #nom #parser

nom_bencode

使用 nom 编写的 bencode 解析器

5 个版本

0.2.0 2023 年 2 月 8 日
0.1.3 2022 年 9 月 8 日
0.1.2 2022 年 7 月 5 日
0.1.1 2022 年 7 月 5 日
0.1.0 2022 年 7 月 5 日

#1639解析器实现

MIT/Apache

370KB
371

nom_bencode

Version Downloads License Rust Docs

使用 nom 编写的 bencode 解析器。

use nom_bencode::Value;

let data = nom_bencode::parse(b"d3:cow3:moo4:spam4:eggse").unwrap();
let v = data.first().unwrap();

if let Value::Dictionary(dict) = v {
    let v = dict.get("cow".as_bytes()).unwrap();

    if let Value::Bytes(data) = v {
        assert_eq!(data, b"moo");
    }

    let v = dict.get("spam".as_bytes()).unwrap();
    if let Value::Bytes(data) = v {
        assert_eq!(data, b"eggs");
    }
}

许可:MIT OR Apache-2.0


lib.rs:

Version Downloads License Rust Docs

使用 nom 编写的 bencode 解析器。

use nom_bencode::Value;

let data = nom_bencode::parse(b"d3:cow3:moo4:spam4:eggse").unwrap();
let v = data.first().unwrap();

if let Value::Dictionary(dict) = v {
    let v = dict.get("cow".as_bytes()).unwrap();

    if let Value::Bytes(data) = v {
        assert_eq!(data, b"moo");
    }

    let v = dict.get("spam".as_bytes()).unwrap();
    if let Value::Bytes(data) = v {
        assert_eq!(data, b"eggs");
    }
}

依赖

~1.1–1.8MB
~37K SLoC