diff --git a/src/io/frame.rs b/src/io/frame.rs index 72b7b29ce..cef835790 100644 --- a/src/io/frame.rs +++ b/src/io/frame.rs @@ -12,6 +12,7 @@ use io::Io; /// be handed out efficiently, each with a `'static` lifetime which keeps the /// data alive. The buffer also supports mutation but may require bytes to be /// copied to complete the operation. +#[derive(Clone)] pub struct EasyBuf { buf: Arc>, start: usize, @@ -177,6 +178,17 @@ impl<'a> DerefMut for EasyBufMut<'a> { } } +impl From> for EasyBuf { + fn from(vec: Vec) -> EasyBuf { + let end = vec.len(); + EasyBuf { + buf: Arc::new(vec), + start: 0, + end: end, + } + } +} + impl<'a> Drop for EasyBufMut<'a> { fn drop(&mut self) { *self.end = self.buf.len();