valence/crates/valence_nbt/src
Ryan Johnson 6338fc6300
serde support for valence_nbt + fixes. (#352)
## 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.
2023-06-04 05:56:10 -07:00
..
binary serde support for valence_nbt + fixes. (#352) 2023-06-04 05:56:10 -07:00
serde serde support for valence_nbt + fixes. (#352) 2023-06-04 05:56:10 -07:00
binary.rs serde support for valence_nbt + fixes. (#352) 2023-06-04 05:56:10 -07:00
compound.rs serde support for valence_nbt + fixes. (#352) 2023-06-04 05:56:10 -07:00
lib.rs serde support for valence_nbt + fixes. (#352) 2023-06-04 05:56:10 -07:00
serde.rs serde support for valence_nbt + fixes. (#352) 2023-06-04 05:56:10 -07:00
snbt.rs Refactor valence_protocol (#253) 2023-02-23 22:16:22 -08:00
tag.rs Reorganize Packages (#180) 2022-12-29 16:51:05 -08:00
value.rs Update to 1.19.4 (#302) 2023-03-31 14:58:47 -07:00