From 587a66da4760424ef20676c46251488cd84d350e Mon Sep 17 00:00:00 2001 From: Martin Habovstiak Date: Sun, 23 Mar 2025 18:44:28 +0100 Subject: [PATCH] Add a bunch of missing conversions for `Witness` `Witness` was missing conversions from arrays (and variations) which was annoying when creating known-sized witnesses. These come up when spending statically-known inputs and in tests. --- primitives/src/witness.rs | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/primitives/src/witness.rs b/primitives/src/witness.rs index 101c37caa..b2242932a 100644 --- a/primitives/src/witness.rs +++ b/primitives/src/witness.rs @@ -410,6 +410,46 @@ impl From> for Witness { fn from(vec: Vec<&[u8]>) -> Self { Witness::from_slice(&vec) } } +impl From<[&[u8]; N]> for Witness { + #[inline] + fn from(arr: [&[u8]; N]) -> Self { Witness::from_slice(&arr) } +} + +impl From<&[&[u8]; N]> for Witness { + #[inline] + fn from(arr: &[&[u8]; N]) -> Self { Witness::from_slice(arr) } +} + +impl From<&[[u8; N]]> for Witness { + #[inline] + fn from(slice: &[[u8; N]]) -> Self { Witness::from_slice(slice) } +} + +impl From<&[&[u8; N]]> for Witness { + #[inline] + fn from(slice: &[&[u8; N]]) -> Self { Witness::from_slice(slice) } +} + +impl From<[[u8; M]; N]> for Witness { + #[inline] + fn from(slice: [[u8; M]; N]) -> Self { Witness::from_slice(&slice) } +} + +impl From<&[[u8; M]; N]> for Witness { + #[inline] + fn from(slice: &[[u8; M]; N]) -> Self { Witness::from_slice(slice) } +} + +impl From<[&[u8; M]; N]> for Witness { + #[inline] + fn from(slice: [&[u8; M]; N]) -> Self { Witness::from_slice(&slice) } +} + +impl From<&[&[u8; M]; N]> for Witness { + #[inline] + fn from(slice: &[&[u8; M]; N]) -> Self { Witness::from_slice(slice) } +} + impl Default for Witness { #[inline] fn default() -> Self { Self::new() }