From b6ab4f2485c5e4bc6c18868c4e4c522404f77b20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Le=CC=81o=20Testard?= Date: Mon, 25 Nov 2013 19:35:03 +0100 Subject: [PATCH] Add an implementation of Encodable and Decodable for Rc. This will be needed to use Rc in place of @ in libsyntax. --- src/libextra/serialize.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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)