From ae56cede1d63133193f5263e6797b97e6b69e6bd Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Fri, 4 Aug 2023 19:08:21 +0000 Subject: [PATCH] der: impl `RefToOwned`/`OwnedToRef` for `&[u8]`/`Box<[u8]>` Signed-off-by: Arthur Gautier --- der/src/referenced.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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() + } +}