diff options
Diffstat (limited to 'compiler/rustc_serialize/src/serialize.rs')
| -rw-r--r-- | compiler/rustc_serialize/src/serialize.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/rustc_serialize/src/serialize.rs b/compiler/rustc_serialize/src/serialize.rs index 42bf6ff2a98..d5053034ed8 100644 --- a/compiler/rustc_serialize/src/serialize.rs +++ b/compiler/rustc_serialize/src/serialize.rs @@ -431,6 +431,20 @@ where } } +impl<'a, S: Encoder> Encodable<S> for Cow<'a, str> { + fn encode(&self, s: &mut S) -> Result<(), S::Error> { + let val: &str = self; + val.encode(s) + } +} + +impl<'a, D: Decoder> Decodable<D> for Cow<'a, str> { + fn decode(d: &mut D) -> Cow<'static, str> { + let v: String = Decodable::decode(d); + Cow::Owned(v) + } +} + impl<S: Encoder, T: Encodable<S>> Encodable<S> for Option<T> { fn encode(&self, s: &mut S) -> Result<(), S::Error> { s.emit_option(|s| match *self { |
