summaryrefslogtreecommitdiff
path: root/src/codec/encode.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/codec/encode.rs')
-rw-r--r--src/codec/encode.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/codec/encode.rs b/src/codec/encode.rs
index ae5eb4e..7463995 100644
--- a/src/codec/encode.rs
+++ b/src/codec/encode.rs
@@ -269,6 +269,28 @@ impl<Data> Encode<Data> for bool {
}
}
+// ~ Encode pointer
+
+impl<Data, T> Encode<Data> for std::sync::Arc<T>
+where
+ T: Encode<Data>,
+{
+ fn encode(&self, buffer: &mut dyn Write, ctx: &Context<Data>) -> Result<usize> {
+ let data = self.as_ref();
+ data.encode(buffer, ctx)
+ }
+}
+
+impl<Data, T> Encode<Data> for std::sync::Arc<[T]>
+where
+ T: Encode<Data>,
+{
+ fn encode(&self, buffer: &mut dyn Write, ctx: &Context<Data>) -> Result<usize> {
+ let data = self.as_ref();
+ data.encode(buffer, ctx)
+ }
+}
+
impl_encode!(u8);
impl_encode!(u16);
impl_encode!(u32);