mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-03 08:34:07 +02:00
fix box/rc/arc write
This commit is contained in:
parent
d2fe433d6b
commit
309a3b1f6f
2 changed files with 29 additions and 9 deletions
18
src/write.rs
18
src/write.rs
|
|
@ -161,21 +161,21 @@ impl<E: Endianness, T: BitWrite<E>, const N: usize> BitWrite<E> for [T; N] {
|
|||
impl<T: BitWrite<E>, E: Endianness> BitWrite<E> for Box<T> {
|
||||
#[inline]
|
||||
fn write(&self, stream: &mut BitWriteStream<E>) -> Result<()> {
|
||||
stream.write(self)
|
||||
stream.write(self.as_ref())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: BitWrite<E>, E: Endianness> BitWrite<E> for Rc<T> {
|
||||
#[inline]
|
||||
fn write(&self, stream: &mut BitWriteStream<E>) -> Result<()> {
|
||||
stream.write(self)
|
||||
stream.write(self.as_ref())
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: BitWrite<E>, E: Endianness> BitWrite<E> for Arc<T> {
|
||||
#[inline]
|
||||
fn write(&self, stream: &mut BitWriteStream<E>) -> Result<()> {
|
||||
stream.write(self)
|
||||
stream.write(self.as_ref())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -318,23 +318,23 @@ impl<E: Endianness, T: BitWriteSized<E>, const N: usize> BitWriteSized<E> for [T
|
|||
}
|
||||
}
|
||||
|
||||
impl<T: BitWrite<E>, E: Endianness> BitWriteSized<E> for Box<T> {
|
||||
impl<T: BitWriteSized<E>, E: Endianness> BitWriteSized<E> for Box<T> {
|
||||
#[inline]
|
||||
fn write_sized(&self, stream: &mut BitWriteStream<E>, len: usize) -> Result<()> {
|
||||
stream.write_sized(self, len)
|
||||
stream.write_sized(self.as_ref(), len)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: BitWrite<E>, E: Endianness> BitWriteSized<E> for Rc<T> {
|
||||
impl<T: BitWriteSized<E>, E: Endianness> BitWriteSized<E> for Rc<T> {
|
||||
#[inline]
|
||||
fn write_sized(&self, stream: &mut BitWriteStream<E>, len: usize) -> Result<()> {
|
||||
stream.write_sized(self, len)
|
||||
stream.write_sized(self.as_ref(), len)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: BitWrite<E>, E: Endianness> BitWriteSized<E> for Arc<T> {
|
||||
impl<T: BitWriteSized<E>, E: Endianness> BitWriteSized<E> for Arc<T> {
|
||||
#[inline]
|
||||
fn write_sized(&self, stream: &mut BitWriteStream<E>, len: usize) -> Result<()> {
|
||||
stream.write_sized(self, len)
|
||||
stream.write_sized(self.as_ref(), len)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
use bitbuffer::{BigEndian, BitReadBuffer, BitReadStream, BitWriteStream, LittleEndian};
|
||||
use std::rc::Rc;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[test]
|
||||
fn test_write_bool_le() {
|
||||
|
|
@ -184,3 +186,21 @@ fn test_write_signed() {
|
|||
assert_eq!(-17i32, read.read_int(32).unwrap());
|
||||
assert_eq!(-9i32, read.read_int(8).unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_write_container() {
|
||||
let mut data = Vec::new();
|
||||
{
|
||||
let mut stream = BitWriteStream::new(&mut data, LittleEndian);
|
||||
|
||||
stream.write(&Box::new(true)).unwrap();
|
||||
stream.write(&Rc::new(true)).unwrap();
|
||||
stream.write(&Arc::new(true)).unwrap();
|
||||
}
|
||||
|
||||
let mut read = BitReadStream::from(BitReadBuffer::new(&data, LittleEndian));
|
||||
|
||||
assert_eq!(Box::new(true), read.read().unwrap());
|
||||
assert_eq!(Rc::new(true), read.read().unwrap());
|
||||
assert_eq!(Arc::new(true), read.read().unwrap());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue