diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2026-01-13 10:51:45 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-13 10:51:45 -0600 |
| commit | b21ac946cafaacc9ee2478ea48ed9e72554f79ed (patch) | |
| tree | 4d05744b9801e94f5da6563d8fabddfb20d1c7b7 /azalea-registry/src | |
| parent | d5fa5e32b37754b3b5c136e58821e48cd3b7c2ff (diff) | |
| download | azalea-drasl-b21ac946cafaacc9ee2478ea48ed9e72554f79ed.tar.xz | |
Merge AzaleaRead and AzaleaWrite (#305)
Diffstat (limited to 'azalea-registry/src')
| -rw-r--r-- | azalea-registry/src/identifier.rs | 6 | ||||
| -rw-r--r-- | azalea-registry/src/lib.rs | 58 |
2 files changed, 22 insertions, 42 deletions
diff --git a/azalea-registry/src/identifier.rs b/azalea-registry/src/identifier.rs index 4f906181..c7266bf4 100644 --- a/azalea-registry/src/identifier.rs +++ b/azalea-registry/src/identifier.rs @@ -8,7 +8,7 @@ use std::{ str::FromStr, }; -use azalea_buf::{AzaleaRead, AzaleaWrite, BufReadError}; +use azalea_buf::{AzBuf, BufReadError}; #[cfg(feature = "serde")] use serde::{Deserialize, Deserializer, Serialize, Serializer, de}; use simdnbt::{FromNbtTag, ToNbtTag, owned::NbtTag}; @@ -106,13 +106,11 @@ impl From<&str> for Identifier { } } -impl AzaleaRead for Identifier { +impl AzBuf for Identifier { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { let location_string = String::azalea_read(buf)?; Ok(Identifier::new(&location_string)) } -} -impl AzaleaWrite for Identifier { fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { self.to_string().azalea_write(buf) } diff --git a/azalea-registry/src/lib.rs b/azalea-registry/src/lib.rs index fa197412..fe6b85b3 100644 --- a/azalea-registry/src/lib.rs +++ b/azalea-registry/src/lib.rs @@ -16,7 +16,7 @@ use std::{ io::{self, Cursor, Write}, }; -use azalea_buf::{AzaleaRead, AzaleaReadVar, AzaleaWrite, AzaleaWriteVar, BufReadError}; +use azalea_buf::{AzBuf, AzBufVar, BufReadError}; #[cfg(feature = "serde")] use serde::Serialize; use simdnbt::{FromNbtTag, borrow::NbtTag}; @@ -55,7 +55,7 @@ pub type Block = builtin::BlockKind; #[deprecated = "renamed to `azalea_registry::data::DimensionKind`"] pub type DimensionType = data::DimensionKind; -pub trait Registry: AzaleaRead + AzaleaWrite + PartialEq + PartialOrd + Ord + Copy + Hash +pub trait Registry: AzBuf + PartialEq + PartialOrd + Ord + Copy + Hash where Self: Sized, { @@ -69,7 +69,7 @@ where #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub struct OptionalRegistry<T: Registry>(pub Option<T>); -impl<T: Registry> AzaleaRead for OptionalRegistry<T> { +impl<T: Registry> AzBuf for OptionalRegistry<T> { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { Ok(OptionalRegistry(match u32::azalea_read_var(buf)? { 0 => None, @@ -79,8 +79,6 @@ impl<T: Registry> AzaleaRead for OptionalRegistry<T> { ), })) } -} -impl<T: Registry> AzaleaWrite for OptionalRegistry<T> { fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { match &self.0 { None => 0u32.azalea_write_var(buf), @@ -91,12 +89,12 @@ impl<T: Registry> AzaleaWrite for OptionalRegistry<T> { /// A registry that will either take an ID or a resource location. #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] -pub enum CustomRegistry<D: Registry, C: AzaleaRead + AzaleaWrite> { +pub enum CustomRegistry<D: Registry, C: AzBuf> { Direct(D), Custom(C), } -impl<D: Registry, C: AzaleaRead + AzaleaWrite> AzaleaRead for CustomRegistry<D, C> { +impl<D: Registry, C: AzBuf> AzBuf for CustomRegistry<D, C> { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { let direct_registry = OptionalRegistry::<D>::azalea_read(buf)?; if let Some(direct_registry) = direct_registry.0 { @@ -104,8 +102,6 @@ impl<D: Registry, C: AzaleaRead + AzaleaWrite> AzaleaRead for CustomRegistry<D, } Ok(CustomRegistry::Custom(C::azalea_read(buf)?)) } -} -impl<D: Registry, C: AzaleaRead + AzaleaWrite> AzaleaWrite for CustomRegistry<D, C> { fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { match self { CustomRegistry::Direct(direct_registry) => { @@ -122,7 +118,7 @@ impl<D: Registry, C: AzaleaRead + AzaleaWrite> AzaleaWrite for CustomRegistry<D, } #[derive(Clone, PartialEq)] -pub enum HolderSet<D: Registry, Identifier: AzaleaRead + AzaleaWrite> { +pub enum HolderSet<D: Registry, Identifier: AzBuf> { Direct { contents: Vec<D>, }, @@ -131,7 +127,7 @@ pub enum HolderSet<D: Registry, Identifier: AzaleaRead + AzaleaWrite> { contents: Vec<Identifier>, }, } -impl<D: Registry, Identifier: AzaleaRead + AzaleaWrite> AzaleaRead for HolderSet<D, Identifier> { +impl<D: Registry, Identifier: AzBuf> AzBuf for HolderSet<D, Identifier> { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { let size = i32::azalea_read_var(buf)?.wrapping_sub(1); if size == -1 { @@ -148,8 +144,6 @@ impl<D: Registry, Identifier: AzaleaRead + AzaleaWrite> AzaleaRead for HolderSet Ok(Self::Direct { contents }) } } -} -impl<D: Registry, Identifier: AzaleaRead + AzaleaWrite> AzaleaWrite for HolderSet<D, Identifier> { fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { match self { Self::Direct { contents } => { @@ -166,9 +160,7 @@ impl<D: Registry, Identifier: AzaleaRead + AzaleaWrite> AzaleaWrite for HolderSe Ok(()) } } -impl<D: Registry + Debug, Identifier: AzaleaRead + AzaleaWrite + Debug> Debug - for HolderSet<D, Identifier> -{ +impl<D: Registry + Debug, Identifier: AzBuf + Debug> Debug for HolderSet<D, Identifier> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::Direct { contents } => f.debug_list().entries(contents).finish(), @@ -180,13 +172,13 @@ impl<D: Registry + Debug, Identifier: AzaleaRead + AzaleaWrite + Debug> Debug } } } -impl<D: Registry, Identifier: AzaleaRead + AzaleaWrite> From<Vec<D>> for HolderSet<D, Identifier> { +impl<D: Registry, Identifier: AzBuf> From<Vec<D>> for HolderSet<D, Identifier> { fn from(contents: Vec<D>) -> Self { Self::Direct { contents } } } #[cfg(feature = "serde")] -impl<D: Registry + Serialize, Identifier: AzaleaRead + AzaleaWrite + Serialize> Serialize +impl<D: Registry + Serialize, Identifier: AzBuf + Serialize> Serialize for HolderSet<D, Identifier> { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> @@ -205,7 +197,7 @@ impl<D: Registry + Serialize, Identifier: AzaleaRead + AzaleaWrite + Serialize> } } } -impl<D: Registry, Identifier: AzaleaRead + AzaleaWrite> Default for HolderSet<D, Identifier> { +impl<D: Registry, Identifier: AzBuf> Default for HolderSet<D, Identifier> { fn default() -> Self { Self::Direct { contents: Vec::new(), @@ -215,11 +207,11 @@ impl<D: Registry, Identifier: AzaleaRead + AzaleaWrite> Default for HolderSet<D, /// A reference to either a registry or a custom value (usually something with /// an `Identifier`). -pub enum Holder<R: Registry, Direct: AzaleaRead + AzaleaWrite> { +pub enum Holder<R: Registry, Direct: AzBuf> { Reference(R), Direct(Direct), } -impl<R: Registry, Direct: AzaleaRead + AzaleaWrite> AzaleaRead for Holder<R, Direct> { +impl<R: Registry, Direct: AzBuf> AzBuf for Holder<R, Direct> { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { let id = u32::azalea_read_var(buf)?; if id == 0 { @@ -232,8 +224,6 @@ impl<R: Registry, Direct: AzaleaRead + AzaleaWrite> AzaleaRead for Holder<R, Dir Ok(Self::Reference(value)) } } -} -impl<R: Registry, Direct: AzaleaRead + AzaleaWrite> AzaleaWrite for Holder<R, Direct> { fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { match self { Self::Reference(value) => (value.to_u32() + 1).azalea_write_var(buf), @@ -244,7 +234,7 @@ impl<R: Registry, Direct: AzaleaRead + AzaleaWrite> AzaleaWrite for Holder<R, Di } } } -impl<R: Registry + Debug, Direct: AzaleaRead + AzaleaWrite + Debug> Debug for Holder<R, Direct> { +impl<R: Registry + Debug, Direct: AzBuf + Debug> Debug for Holder<R, Direct> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::Reference(value) => f.debug_tuple("Reference").field(value).finish(), @@ -252,7 +242,7 @@ impl<R: Registry + Debug, Direct: AzaleaRead + AzaleaWrite + Debug> Debug for Ho } } } -impl<R: Registry + Clone, Direct: AzaleaRead + AzaleaWrite + Clone> Clone for Holder<R, Direct> { +impl<R: Registry + Clone, Direct: AzBuf + Clone> Clone for Holder<R, Direct> { fn clone(&self) -> Self { match self { Self::Reference(value) => Self::Reference(*value), @@ -260,9 +250,7 @@ impl<R: Registry + Clone, Direct: AzaleaRead + AzaleaWrite + Clone> Clone for Ho } } } -impl<R: Registry + PartialEq, Direct: AzaleaRead + AzaleaWrite + PartialEq> PartialEq - for Holder<R, Direct> -{ +impl<R: Registry + PartialEq, Direct: AzBuf + PartialEq> PartialEq for Holder<R, Direct> { fn eq(&self, other: &Self) -> bool { match (self, other) { (Self::Reference(a), Self::Reference(b)) => a == b, @@ -271,15 +259,13 @@ impl<R: Registry + PartialEq, Direct: AzaleaRead + AzaleaWrite + PartialEq> Part } } } -impl<R: Registry + Default, Direct: AzaleaRead + AzaleaWrite> Default for Holder<R, Direct> { +impl<R: Registry + Default, Direct: AzBuf> Default for Holder<R, Direct> { fn default() -> Self { Self::Reference(R::default()) } } #[cfg(feature = "serde")] -impl<R: Registry + Serialize, Direct: AzaleaRead + AzaleaWrite + Serialize> Serialize - for Holder<R, Direct> -{ +impl<R: Registry + Serialize, Direct: AzBuf + Serialize> Serialize for Holder<R, Direct> { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer, @@ -291,9 +277,7 @@ impl<R: Registry + Serialize, Direct: AzaleaRead + AzaleaWrite + Serialize> Seri } } -impl<R: Registry + FromNbtTag, Direct: AzaleaRead + AzaleaWrite + FromNbtTag> FromNbtTag - for Holder<R, Direct> -{ +impl<R: Registry + FromNbtTag, Direct: AzBuf + FromNbtTag> FromNbtTag for Holder<R, Direct> { fn from_nbt_tag(tag: NbtTag) -> Option<Self> { if let Some(reference) = R::from_nbt_tag(tag) { return Some(Self::Reference(reference)); @@ -307,9 +291,7 @@ impl<R: Registry + FromNbtTag, Direct: AzaleaRead + AzaleaWrite + FromNbtTag> Fr /// /// These can be resolved into their actual values with /// `ResolvableDataRegistry` from azalea-core. -pub trait DataRegistry: - AzaleaRead + AzaleaWrite + PartialEq + PartialOrd + Ord + Copy + Hash -{ +pub trait DataRegistry: AzBuf + PartialEq + PartialOrd + Ord + Copy + Hash { const NAME: &'static str; type Key: DataRegistryKey; |
