aboutsummaryrefslogtreecommitdiff
path: root/azalea-buf/src
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-buf/src')
-rwxr-xr-xazalea-buf/src/read.rs15
-rwxr-xr-xazalea-buf/src/write.rs17
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> {