From 585b51e91a5335eae37bc5af7c0111bb2092b156 Mon Sep 17 00:00:00 2001 From: mat Date: Sat, 20 Sep 2025 20:35:16 -1200 Subject: more accurate mining and impl PartialEq for packets --- azalea-buf/src/write.rs | 47 +++++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 20 deletions(-) (limited to 'azalea-buf/src/write.rs') diff --git a/azalea-buf/src/write.rs b/azalea-buf/src/write.rs index a925647d..7b9ad496 100644 --- a/azalea-buf/src/write.rs +++ b/azalea-buf/src/write.rs @@ -5,6 +5,7 @@ use std::{ }; use byteorder::{BigEndian, WriteBytesExt}; +use indexmap::IndexMap; use super::{MAX_STRING_LENGTH, UnsizedByteArray}; @@ -80,30 +81,36 @@ impl AzaleaWrite for [T] { } } -impl AzaleaWrite for HashMap { - fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { - u32::azalea_write_var(&(self.len() as u32), buf)?; - for (key, value) in self { - key.azalea_write(buf)?; - value.azalea_write(buf)?; - } - - Ok(()) - } -} +macro_rules! impl_for_map_type { + ($ty: ident) => { + impl AzaleaWrite for $ty { + fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { + u32::azalea_write_var(&(self.len() as u32), buf)?; + for (key, value) in self { + key.azalea_write(buf)?; + value.azalea_write(buf)?; + } -impl AzaleaWriteVar for HashMap { - fn azalea_write_var(&self, buf: &mut impl Write) -> io::Result<()> { - u32::azalea_write_var(&(self.len() as u32), buf)?; - for (key, value) in self { - key.azalea_write(buf)?; - value.azalea_write_var(buf)?; + Ok(()) + } } - - Ok(()) - } + impl AzaleaWriteVar for $ty { + fn azalea_write_var(&self, buf: &mut impl Write) -> io::Result<()> { + u32::azalea_write_var(&(self.len() as u32), buf)?; + for (key, value) in self { + key.azalea_write(buf)?; + value.azalea_write_var(buf)?; + } + + Ok(()) + } + } + }; } +impl_for_map_type!(HashMap); +impl_for_map_type!(IndexMap); + impl AzaleaWrite for Vec { fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> { (self.len() as u32).azalea_write_var(buf)?; -- cgit v1.2.3