diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2016-09-17 23:31:03 +0300 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2016-09-20 20:08:06 +0300 |
| commit | 221d1a97e505d00fc1664c5b2d9041f8b78aa933 (patch) | |
| tree | 1e2f686fb89b143ca397f208a3f6c1be0a5d086f /src/libsyntax_pos | |
| parent | b01d4891e2935cf24242e44b50dfa37efc28d28c (diff) | |
| download | rust-221d1a97e505d00fc1664c5b2d9041f8b78aa933.tar.gz rust-221d1a97e505d00fc1664c5b2d9041f8b78aa933.zip | |
serialize: allow specifying the default behavior for specializations.
Diffstat (limited to 'src/libsyntax_pos')
| -rw-r--r-- | src/libsyntax_pos/lib.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs index fb59f411106..8c8b4173fe5 100644 --- a/src/libsyntax_pos/lib.rs +++ b/src/libsyntax_pos/lib.rs @@ -138,8 +138,8 @@ pub struct SpanLabel { pub label: Option<String>, } -impl Encodable for Span { - fn encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> { +impl serialize::UseSpecializedEncodable for Span { + fn default_encode<S: Encoder>(&self, s: &mut S) -> Result<(), S::Error> { s.emit_struct("Span", 2, |s| { s.emit_struct_field("lo", 0, |s| { self.lo.encode(s) @@ -152,7 +152,15 @@ impl Encodable for Span { } } -impl serialize::UseSpecializedDecodable for Span {} +impl serialize::UseSpecializedDecodable for Span { + fn default_decode<D: Decoder>(d: &mut D) -> Result<Span, D::Error> { + d.read_struct("Span", 2, |d| { + let lo = d.read_struct_field("lo", 0, Decodable::decode)?; + let hi = d.read_struct_field("hi", 1, Decodable::decode)?; + Ok(mk_sp(lo, hi)) + }) + } +} fn default_span_debug(span: Span, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "Span {{ lo: {:?}, hi: {:?}, expn_id: {:?} }}", |
