aboutsummaryrefslogtreecommitdiff
path: root/azalea-buf/src
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-buf/src')
-rwxr-xr-xazalea-buf/src/read.rs20
-rwxr-xr-xazalea-buf/src/write.rs9
2 files changed, 18 insertions, 11 deletions
diff --git a/azalea-buf/src/read.rs b/azalea-buf/src/read.rs
index d5c4d0a8..b3352a80 100755
--- a/azalea-buf/src/read.rs
+++ b/azalea-buf/src/read.rs
@@ -103,17 +103,6 @@ fn read_utf_with_len(buf: &mut Cursor<&[u8]>, max_length: u32) -> Result<String,
Ok(string)
}
-// fast varints modified from https://github.com/luojia65/mc-varint/blob/master/src/lib.rs#L67
-/// Read a single varint from the reader and return the value, along with the
-/// number of bytes read
-// pub async fn read_varint_async(
-// reader: &mut (dyn AsyncRead + Unpin + Send),
-// ) -> Result<i32, BufReadError> { let mut buffer = [0]; let mut ans = 0; for i
-// in 0..5 { reader.read_exact(&mut buffer).await?; ans |= ((buffer[0] &
-// 0b0111_1111) as i32) << (7 * i); if buffer[0] & 0b1000_0000 == 0 { break; }
-// } Ok(ans)
-// }
-
pub trait McBufReadable
where
Self: Sized,
@@ -373,3 +362,12 @@ impl McBufReadable for simdnbt::owned::Nbt {
Ok(simdnbt::owned::Nbt::read_unnamed(buf)?)
}
}
+
+impl<T> McBufReadable for Box<T>
+where
+ T: McBufReadable,
+{
+ fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> {
+ Ok(Box::new(T::read_from(buf)?))
+ }
+}
diff --git a/azalea-buf/src/write.rs b/azalea-buf/src/write.rs
index 7b1fb331..61dedfd8 100755
--- a/azalea-buf/src/write.rs
+++ b/azalea-buf/src/write.rs
@@ -281,3 +281,12 @@ impl McBufWritable for simdnbt::owned::Nbt {
buf.write_all(&data)
}
}
+
+impl<T> McBufWritable for Box<T>
+where
+ T: McBufWritable,
+{
+ fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
+ T::write_into(&**self, buf)
+ }
+}