diff --git a/src/libextra/serialize.rs b/src/libextra/serialize.rs index 8e75be651cf..9b0e00a41e5 100644 --- a/src/libextra/serialize.rs +++ b/src/libextra/serialize.rs @@ -20,6 +20,7 @@ Core encoding and decoding interfaces. use std::at_vec; use std::hashmap::{HashMap, HashSet}; +use std::rc::Rc; use std::trie::{TrieMap, TrieSet}; use std::vec; use ringbuf::RingBuf; @@ -405,6 +406,20 @@ impl> Encodable for @T { } } +impl + Freeze> Encodable for Rc { + #[inline] + fn encode(&self, s: &mut S) { + self.borrow().encode(s) + } +} + +impl + Freeze> Decodable for Rc { + #[inline] + fn decode(d: &mut D) -> Rc { + Rc::new(Decodable::decode(d)) + } +} + impl + 'static> Decodable for @T { fn decode(d: &mut D) -> @T { @Decodable::decode(d)