5 个稳定版本
1.1.0 | 2021 年 10 月 10 日 |
---|---|
1.0.3 | 2021 年 9 月 28 日 |
1.0.2 | 2021 年 9 月 27 日 |
#866 在 编码
54KB
1K SLoC
EMP
高效管理的打包系统,NBT 但更好!
使用 rust crate
Rust 结构
pub enum Value {
Null,
Object(std::collections::HashMap<std::string::String, Value>),
Array(std::vec::Vec<Value>),
String(std::string::String),
Bit(bool),
Boolean(bool),
Int32(i32),
Float(f32),
Double(f64),
Int64(i64),
Int16(i16),
Int8(i8),
}
编码
使用 emp::encode::encode
,你可以传递一个 emp::value::Value
并得到一个 std::vec::Vec<u8>
,这将把 Value
中的数据编码成字节,然后你可以将其写入文件。
解码
使用 emp::decode::decode
,你可以传递一个 &[u8]
并返回一个 Result<emp::value::Value, emp::errors::DecodeError>
。
DecodeError
是一个枚举,如下所示
pub enum DecodeError {
UnexpectedByte(u8, u64),
EOFError,
UnmatchedKey(std::string::String),
StringDecodeError(std::str::Utf8Error),
}
你也可以使用 emp::decode::decode_safe
并传递相同的数据以相同的方式解码数据,但如果出现 Err
,它将返回 emp::value::Value::Null
。
解析
使用 emp::value::parse::from_str
函数,您可以传入一个 &str
将其转换为 Result<emp::value::Value, emp::errors::ParseError>
。或者您也可以使用 emp::value::parse::from_str_safe
并传入相同的内容,如果遇到错误,则返回 emp::value::Value::Null
。
JSON 兼容性
转换
此包与 serde_json
兼容,通过使用 emp::value::json::from_json
,您可以转换 serde_json::Value
为 emp::value::Value
,反之亦然使用 emp::value::json::to_json
。
编码
使用 emp::encode::json::encode_json
,您可以直接将 serde_json::Value
编码为 emp
字节码。
解码
使用 emp::decode::json::decode_json
,您可以直接将 emp
字节码解码为 serde_json::Value
,这使用 decode_safe
而不是 decode
。您也可以使用 emp::decode::json::decode_json_unsafe
来获取错误而不是 serde_json::Value::Null
命令行工具
您可以使用 emp
运行它
┌───────────────────────────────────┐
│[E]fficiently [M]anaged [P]ackaging│
│ Help: │
│ │
│[-r | --read] <filename>: Reads the│
│EMP bytecode and prints it out as a│
│EMP string. │
│ │
│[-w | --write] <filename> <emp>: │
|Writes the EMP data into the file │
│as EMP bytecode. │
│ │
│NOTE: Make sure your EMP data is in│
│quotes. │
│ │
│[-fj | --from_json] <json>: Parses │
│the JSON data and prints it out as │
│an EMP string. │
│ │
│NOTE: Make sure your json data is │
│in quotes. │
│ │
│[-tj | --to_json] <emp>: Parses the│
│EMP data and prints it out as a │
│json string. │
│ │
│NOTE: Make sure your EMP data is in│
│quotes. │
│ │
│[-v | --version]: Prints out the │
│version of EMP you are using │
└───────────────────────────────────┘
依赖关系
~355–760KB
~17K SLoC