From 98b2edfc593a8f9e74e497c251d0419cd02d8e75 Mon Sep 17 00:00:00 2001 From: KodrAus Date: Fri, 11 Aug 2023 19:47:17 +1000 Subject: [PATCH] support converting between Uuid and vec --- src/lib.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index c654d3cd..8a2ba702 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -945,6 +945,22 @@ impl AsRef<[u8]> for Uuid { } } +#[cfg(feature = "std")] +impl From for std::vec::Vec { + fn from(value: Uuid) -> Self { + value.0.to_vec() + } +} + +#[cfg(feature = "std")] +impl std::convert::TryFrom> for Uuid { + type Error = Error; + + fn try_from(value: std::vec::Vec) -> Result { + Uuid::from_slice(&value) + } +} + #[cfg(feature = "serde")] pub mod serde { //! Adapters for alternative `serde` formats. @@ -1744,6 +1760,31 @@ mod tests { assert!(!ur.iter().all(|&b| b == 0)); } + #[test] + #[cfg(feature = "std")] + #[cfg_attr( + all( + target_arch = "wasm32", + target_vendor = "unknown", + target_os = "unknown" + ), + wasm_bindgen_test + )] + fn test_convert_vec() { + use crate::std::{convert::TryInto, vec::Vec}; + + let u = new(); + let ub = u.as_ref(); + + let v: Vec = u.into(); + + assert_eq!(&v, ub); + + let uv: Uuid = v.try_into().unwrap(); + + assert_eq!(uv, u); + } + #[test] #[cfg_attr( all(