diff --git a/src/libserialize/serialize.rs b/src/libserialize/serialize.rs index 90385d7cce9..7914dd8c7d2 100644 --- a/src/libserialize/serialize.rs +++ b/src/libserialize/serialize.rs @@ -451,6 +451,21 @@ impl,T:Encodable> Encodable for ~[T] { } } +impl,T:Decodable> Decodable for ~[T] { + fn decode(d: &mut D) -> Result<~[T], E> { + use std::vec::FromVec; + + d.read_seq(|d, len| { + let mut v: Vec = Vec::with_capacity(len); + for i in range(0, len) { + v.push(try!(d.read_seq_elt(i, |d| Decodable::decode(d)))); + } + let k: ~[T] = FromVec::from_vec(v); + Ok(k) + }) + } +} + impl,T:Encodable> Encodable for Vec { fn encode(&self, s: &mut S) -> Result<(), E> { s.emit_seq(self.len(), |s| {