diff --git a/der/src/referenced.rs b/der/src/referenced.rs index bb920db3a..0bcf78fef 100644 --- a/der/src/referenced.rs +++ b/der/src/referenced.rs @@ -1,5 +1,7 @@ //! A module for working with referenced data. +use alloc::boxed::Box; + /// A trait for borrowing data from an owned struct pub trait OwnedToRef { /// The resulting type referencing back to Self @@ -45,3 +47,19 @@ where self.as_ref().map(|o| o.ref_to_owned()) } } + +impl<'a> RefToOwned<'a> for &'a [u8] { + type Owned = Box<[u8]>; + + fn ref_to_owned(&self) -> Self::Owned { + Box::from(*self) + } +} + +impl OwnedToRef for Box<[u8]> { + type Borrowed<'a> = &'a [u8]; + + fn owned_to_ref(&self) -> Self::Borrowed<'_> { + self.as_ref() + } +}