2个版本
0.1.1 | 2022年9月22日 |
---|---|
0.1.0 | 2022年9月3日 |
#35 in #nbt
用于 valence
75KB
2K SLoC
注意:此crate已被valence_nbt取代。如果您需要此crate名称,请联系Valence开发者。
一个用于序列化和反序列化Minecraft的命名二进制标签(NBT)格式的Serde库。
更多信息,请参阅此处的文档。
lib.rs
:
一个用于序列化和反序列化Minecraft的命名二进制标签(NBT)格式的serde库。
示例
将NBT复合体写入字节缓冲区。
use serde::Serialize;
use serde_nbt::binary::to_writer;
#[derive(Serialize)]
struct Example {
boolean: bool,
string: String,
list_of_float: Vec<f32>,
#[serde(with = "serde_nbt::int_array")]
int_array: Vec<i32>,
}
let example = Example {
boolean: true,
string: "abc123".to_owned(),
list_of_float: vec![3.1415, 2.7182, 1.4142],
int_array: vec![7, 8, 9],
};
let mut buf = Vec::new();
to_writer(&mut buf, &example).unwrap();
有时无法事先知道NBT数据结构。在这种情况下,您可以使用Value
。
use serde_nbt::binary::from_reader;
use serde_nbt::{Compound, Value};
let some_bytes = [10, 0, 0, 3, 0, 3, 105, 110, 116, 0, 0, 222, 173, 0];
let reader = &mut some_bytes.as_slice();
let value: Value = from_reader(reader).unwrap();
let expected_value = Value::Compound(Compound::from_iter([(
"int".to_owned(),
Value::Int(0xdead),
)]));
assert_eq!(value, expected_value);
依赖项
~1.2–1.6MB
~28K SLoC