mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-11 00:00:23 +02:00
added clone to ByteBuf and BytesMut along with simple clone test
This commit is contained in:
@@ -215,3 +215,13 @@ impl fmt::Write for ByteBuf {
|
||||
fmt::write(self, args)
|
||||
}
|
||||
}
|
||||
|
||||
impl Clone for ByteBuf {
|
||||
fn clone(&self) -> Self {
|
||||
ByteBuf {
|
||||
mem: self.mem.clone(),
|
||||
rd: self.rd,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -558,3 +558,16 @@ impl<'a, T: ?Sized> PartialEq<&'a T> for Bytes
|
||||
*self == **other
|
||||
}
|
||||
}
|
||||
|
||||
impl Clone for BytesMut {
|
||||
fn clone(&self) -> BytesMut {
|
||||
let mut v = Vec::with_capacity(self.len());
|
||||
v.extend_from_slice(&self[..]);
|
||||
BytesMut {
|
||||
mem: Mem { inner : Arc::new(UnsafeCell::new(v.into_boxed_slice())) },
|
||||
pos: self.pos,
|
||||
len: self.len,
|
||||
cap: self.cap,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
-1
@@ -1,8 +1,9 @@
|
||||
extern crate bytes;
|
||||
extern crate byteorder;
|
||||
|
||||
use bytes::BufMut;
|
||||
use bytes::{Buf, BufMut, ByteBuf};
|
||||
use std::usize;
|
||||
use std::fmt::Write;
|
||||
|
||||
#[test]
|
||||
fn test_vec_as_mut_buf() {
|
||||
@@ -45,3 +46,13 @@ fn test_put_u16() {
|
||||
buf.put_u16::<byteorder::LittleEndian>(8532);
|
||||
assert_eq!(b"\x54\x21", &buf[..]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_clone() {
|
||||
let mut buf = ByteBuf::with_capacity(100);
|
||||
buf.write_str("this is a test").unwrap();
|
||||
let buf2 = buf.clone();
|
||||
|
||||
buf.write_str(" of our emergecy broadcast system").unwrap();
|
||||
assert_ne!(buf.bytes(), buf2.bytes());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user