mirror of
https://github.com/italicsjenga/valence.git
synced 2024-12-23 22:41:30 +11:00
6338fc6300
## Description - Reorganize `valence_nbt` and feature flag the different parts. SNBT and binary serialization are each behind their own flags. - Add optional serde support to `valence_nbt` behind the `serde` flag. This is useful for end users working with `valence_nbt` and allows us to simplify some code in `valence_biome` and `valence_dimension`. Note that this includes a `Serializer` and `Deserializer` for `Compound` and _not_ the binary and SNBT formats. In other words, it's not possible to go directly from an arbitrary data format to binary NBT and vice versa, but it _is_ possible to go to and from `Compound` and finish the (de)serialization this way. I consider this an acceptable compromise because writing fast and correct serialization routines for `Compound` becomes more difficult when serde is in the way. Besides, the intermediate `Compound` often needs to be created anyway. - Fixed unsound uses of `std::mem::transmute` in `valence_nbt` and elsewhere. Using `transmute` to cast between slice types is unsound because slices are `#[repr(Rust)]` and the layouts are not guaranteed. `slice::from_raw_parts` is used as the replacement.
30 lines
997 B
TOML
30 lines
997 B
TOML
[package]
|
|
name = "valence_nbt"
|
|
description = "A library for Minecraft's Named Binary Tag (NBT) format."
|
|
documentation = "https://docs.rs/valence_nbt/"
|
|
repository = "https://github.com/valence-rs/valence/tree/main/crates/valence_nbt"
|
|
readme = "README.md"
|
|
license.workspace = true
|
|
keywords = ["nbt", "minecraft", "serialization"]
|
|
version = "0.5.0"
|
|
edition.workspace = true
|
|
|
|
[features]
|
|
binary = ["dep:byteorder", "dep:cesu8"]
|
|
snbt = []
|
|
# When enabled, the order of fields in compounds are preserved.
|
|
preserve_order = ["dep:indexmap"]
|
|
serde = ["dep:serde", "dep:thiserror", "indexmap?/serde"]
|
|
|
|
[dependencies]
|
|
byteorder = { workspace = true, optional = true }
|
|
cesu8 = { workspace = true, optional = true }
|
|
indexmap = { workspace = true, optional = true }
|
|
serde = { workspace = true, features = ["derive"], optional = true }
|
|
thiserror = { workspace = true, optional = true }
|
|
uuid = { workspace = true, optional = true }
|
|
|
|
[dev-dependencies]
|
|
pretty_assertions.workspace = true
|
|
serde_json.workspace = true
|