diff --git a/src/refbox.rs b/src/refbox.rs index 23086d7..9cd921a 100644 --- a/src/refbox.rs +++ b/src/refbox.rs @@ -322,3 +322,14 @@ impl <'a, T> Deref for RefBox<'a, T> { } } } + +impl <'a, T> Deref for SliceBox<'a, T> { + type Target = [T]; + + fn deref(&self) -> &[T] { + match &self.inner { + &RefBoxInner::Ref(ref t) => t, + &RefBoxInner::Box(ref b) => b.deref() + } + } +} diff --git a/src/test.rs b/src/test.rs index 67e7be9..5d98617 100644 --- a/src/test.rs +++ b/src/test.rs @@ -311,6 +311,10 @@ fn test_slicebox() { let slice = [1u32, 2, 3 ,4, 5]; let encoded = encode(&SliceBox::new(&slice), Infinite).unwrap(); let decoded: SliceBox<'static, u32> = decode(&encoded[..]).unwrap(); + { + let sb: &[u32] = &decoded; + assert!(slice == sb); + } let vecx: Vec = decoded.take(); assert!(slice == &vecx[..]); }