7 个版本 (破坏性)
0.5.0 | 2024 年 7 月 4 日 |
---|---|
0.4.0 | 2024 年 6 月 28 日 |
0.3.1 | 2021 年 11 月 3 日 |
0.2.0 | 2021 年 1 月 9 日 |
0.0.1 | 2021 年 1 月 2 日 |
在 编码 中排名第 595
每月下载量 151
66KB
1.5K SLoC
bencodex-rs
- 正确性 - 实现 Bencodex 规范并使用其测试套件通过测试。
- Bencodex JSON - 支持 Bencodex 到 JSON 的编码以及 JSON 到 Bencodex 的解码。
- 功能标志 - 支持使用
json
、json-cli
功能标志以最小化使用时的二进制文件大小。
Bencodex JSON 功能
bencodex-rs 实现了 Bencodex JSON 功能,支持编码和解码。
要使用 Bencodex JSON 功能,您应启用 json
功能。
bencodex-rs = { version = "<VERSION>", features = ["json"] }
编码到 JSON
要从 Bencodex 编码到 JSON,您可以使用 to_json
函数。
use bencodex::{ BencodexValue, json::to_json };
let json = to_json(&BencodexValue::Null);
println!("{}", json);
有两种方式编码 BencodexValue::Binary
类型,Hex
和 Base64
。您可以使用 bencodex::json::BinaryEncoding
选择其中一种方式,并将其传递给 bencodex::json::JsonEncodeOptions
,然后传递给 bencodex::json::to_json_with_options
。
use bencodex::BencodexValue;
use bencodex::json::{ BinaryEncoding, JsonEncodeOptions, to_json_with_options };
let json = to_json_with_options(&BencodexValue::Null, JsonEncodeOptions {
binary_encoding: BinaryEncoding::Base64,
});
println!("{}", json);
从 JSON 解码
要从 JSON 解码到 Bencodex,您可以使用 from_json_string
和 from_json
函数。
// from_json_string
use bencodex::{ BencodexValue, json::from_json_string };
let result = from_json_string("null");
assert!(result.is_ok());
assert_eq!(result.unwrap(), BencodexValue::Null);
// from_json
use serde_json::from_str;
use bencodex::{ BencodexValue, json::from_json };
let json = from_str("null").unwrap();
let result = from_json(&json);
assert!(result.is_ok());
assert_eq!(result.unwrap(), BencodexValue::Null);
命令行工具
此外,它还提供了一个命令行工具,用于从 Bencodex 到 JSON 的编码以及从 JSON 到 Bencodex 的解码。您可以使用以下命令安装它
cargo install bencodex-rs --features json-cli
您可以使用以下方式使用它
# encode
$ echo -n 'n' | bencodex
null
$ echo -n 'i123e' | bencodex
"123"
$ echo -n '1:\x12' | bencodex
"0x12"
$ echo -n '1:\x12' | bencodex --base64
"b64:Eg=="
# decode
$ echo -n '"123"' | bencodex -d
123
$ echo -n 'null' | bencodex -d
n
依赖项
~0.8–1.5MB
~30K SLoC