diff options
| author | mat <git@matdoes.dev> | 2025-02-23 08:47:17 +0000 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2025-02-23 08:47:17 +0000 |
| commit | dd557c8f293dbef3e2e881bcb1a85a7697a1ebbb (patch) | |
| tree | 9878084875ac8ca7259db26b2c16776f212802a3 /azalea-buf/src | |
| parent | e21e1b97bf9337e9f4747cd1b545b1b3a03e2ce7 (diff) | |
| download | azalea-drasl-dd557c8f293dbef3e2e881bcb1a85a7697a1ebbb.tar.xz | |
fix memory leak in simulation tests (lol)
also, change some vecs into boxed slices, and add RelativeEntityUpdate::new
Diffstat (limited to 'azalea-buf/src')
| -rwxr-xr-x | azalea-buf/src/read.rs | 15 | ||||
| -rwxr-xr-x | azalea-buf/src/write.rs | 17 |
2 files changed, 31 insertions, 1 deletions
diff --git a/azalea-buf/src/read.rs b/azalea-buf/src/read.rs index 324eab87..b1b95f4d 100755 --- a/azalea-buf/src/read.rs +++ b/azalea-buf/src/read.rs @@ -199,6 +199,11 @@ impl<T: AzaleaRead> AzaleaRead for Vec<T> { Ok(contents) } } +impl<T: AzaleaRead> AzaleaRead for Box<[T]> { + default fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { + Vec::<T>::azalea_read(buf).map(Vec::into_boxed_slice) + } +} impl<T: AzaleaRead> AzaleaReadLimited for Vec<T> { fn azalea_read_limited(buf: &mut Cursor<&[u8]>, limit: usize) -> Result<Self, BufReadError> { let length = u32::azalea_read_var(buf)? as usize; @@ -216,6 +221,11 @@ impl<T: AzaleaRead> AzaleaReadLimited for Vec<T> { Ok(contents) } } +impl<T: AzaleaRead> AzaleaReadLimited for Box<[T]> { + fn azalea_read_limited(buf: &mut Cursor<&[u8]>, limit: usize) -> Result<Self, BufReadError> { + Vec::<T>::azalea_read_limited(buf, limit).map(Vec::into_boxed_slice) + } +} impl<K: AzaleaRead + Send + Eq + Hash, V: AzaleaRead + Send> AzaleaRead for HashMap<K, V> { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { @@ -297,6 +307,11 @@ impl<T: AzaleaReadVar> AzaleaReadVar for Vec<T> { Ok(contents) } } +impl<T: AzaleaReadVar> AzaleaReadVar for Box<[T]> { + fn azalea_read_var(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { + Vec::<T>::azalea_read_var(buf).map(Vec::into_boxed_slice) + } +} impl AzaleaRead for i64 { fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> { diff --git a/azalea-buf/src/write.rs b/azalea-buf/src/write.rs index 73aefe40..c56b0062 100755 --- a/azalea-buf/src/write.rs +++ b/azalea-buf/src/write.rs @@ -64,6 +64,11 @@ impl<T: AzaleaWrite> AzaleaWrite for Vec<T> { self[..].azalea_write(buf) } } +impl<T: AzaleaWrite> AzaleaWrite for Box<[T]> { + default fn azalea_write(&self, buf: &mut impl Write) -> Result<(), io::Error> { + self[..].azalea_write(buf) + } +} impl<T: AzaleaWrite> AzaleaWrite for [T] { fn azalea_write(&self, buf: &mut impl Write) -> Result<(), io::Error> { @@ -167,7 +172,7 @@ impl AzaleaWriteVar for u16 { } } -impl<T: AzaleaWriteVar> AzaleaWriteVar for Vec<T> { +impl<T: AzaleaWriteVar> AzaleaWriteVar for [T] { fn azalea_write_var(&self, buf: &mut impl Write) -> Result<(), io::Error> { u32::azalea_write_var(&(self.len() as u32), buf)?; for i in self { @@ -176,6 +181,16 @@ impl<T: AzaleaWriteVar> AzaleaWriteVar for Vec<T> { Ok(()) } } +impl<T: AzaleaWriteVar> AzaleaWriteVar for Vec<T> { + fn azalea_write_var(&self, buf: &mut impl Write) -> Result<(), io::Error> { + self[..].azalea_write_var(buf) + } +} +impl<T: AzaleaWriteVar> AzaleaWriteVar for Box<[T]> { + fn azalea_write_var(&self, buf: &mut impl Write) -> Result<(), io::Error> { + self[..].azalea_write_var(buf) + } +} impl AzaleaWrite for u8 { fn azalea_write(&self, buf: &mut impl Write) -> Result<(), io::Error> { |
