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 {