Skip to content

Commit 587a66d

Browse files
committed
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.
1 parent 6620a29 commit 587a66d

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

primitives/src/witness.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,46 @@ impl From<Vec<&[u8]>> for Witness {
410410
fn from(vec: Vec<&[u8]>) -> Self { Witness::from_slice(&vec) }
411411
}
412412

413+
impl<const N: usize> From<[&[u8]; N]> for Witness {
414+
#[inline]
415+
fn from(arr: [&[u8]; N]) -> Self { Witness::from_slice(&arr) }
416+
}
417+
418+
impl<const N: usize> From<&[&[u8]; N]> for Witness {
419+
#[inline]
420+
fn from(arr: &[&[u8]; N]) -> Self { Witness::from_slice(arr) }
421+
}
422+
423+
impl<const N: usize> From<&[[u8; N]]> for Witness {
424+
#[inline]
425+
fn from(slice: &[[u8; N]]) -> Self { Witness::from_slice(slice) }
426+
}
427+
428+
impl<const N: usize> From<&[&[u8; N]]> for Witness {
429+
#[inline]
430+
fn from(slice: &[&[u8; N]]) -> Self { Witness::from_slice(slice) }
431+
}
432+
433+
impl<const N: usize, const M: usize> From<[[u8; M]; N]> for Witness {
434+
#[inline]
435+
fn from(slice: [[u8; M]; N]) -> Self { Witness::from_slice(&slice) }
436+
}
437+
438+
impl<const N: usize, const M: usize> From<&[[u8; M]; N]> for Witness {
439+
#[inline]
440+
fn from(slice: &[[u8; M]; N]) -> Self { Witness::from_slice(slice) }
441+
}
442+
443+
impl<const N: usize, const M: usize> From<[&[u8; M]; N]> for Witness {
444+
#[inline]
445+
fn from(slice: [&[u8; M]; N]) -> Self { Witness::from_slice(&slice) }
446+
}
447+
448+
impl<const N: usize, const M: usize> From<&[&[u8; M]; N]> for Witness {
449+
#[inline]
450+
fn from(slice: &[&[u8; M]; N]) -> Self { Witness::from_slice(slice) }
451+
}
452+
413453
impl Default for Witness {
414454
#[inline]
415455
fn default() -> Self { Self::new() }

0 commit comments

Comments
 (0)