From 4b58a254c57cde70aa9a9b5a19e78e0f97c875e3 Mon Sep 17 00:00:00 2001 From: Andrew Poelstra Date: Fri, 8 Jan 2021 23:21:55 +0000 Subject: [PATCH] encode: add some more generic impls (more tuples, references) --- src/consensus/encode.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/consensus/encode.rs b/src/consensus/encode.rs index 20ca31ec..d422cd65 100644 --- a/src/consensus/encode.rs +++ b/src/consensus/encode.rs @@ -679,6 +679,31 @@ impl Decodable for CheckedData { } } +// References +impl<'a, T: Encodable> Encodable for &'a T { + fn consensus_encode(&self, s: S) -> Result { + (&**self).consensus_encode(s) + } +} + +impl<'a, T: Encodable> Encodable for &'a mut T { + fn consensus_encode(&self, s: S) -> Result { + (&**self).consensus_encode(s) + } +} + +impl Encodable for ::std::rc::Rc { + fn consensus_encode(&self, s: S) -> Result { + (&**self).consensus_encode(s) + } +} + +impl Encodable for ::std::sync::Arc { + fn consensus_encode(&self, s: S) -> Result { + (&**self).consensus_encode(s) + } +} + // Tuples macro_rules! tuple_encode { ($($x:ident),*) => ( @@ -707,8 +732,11 @@ macro_rules! tuple_encode { } tuple_encode!(T0, T1); +tuple_encode!(T0, T1, T2); tuple_encode!(T0, T1, T2, T3); +tuple_encode!(T0, T1, T2, T3, T4); tuple_encode!(T0, T1, T2, T3, T4, T5); +tuple_encode!(T0, T1, T2, T3, T4, T5, T6); tuple_encode!(T0, T1, T2, T3, T4, T5, T6, T7); impl Encodable for sha256d::Hash {