|
1 | 1 | use crate::stable_hasher;
|
2 |
| -use rustc_serialize::{ |
3 |
| - opaque::{self, EncodeResult, FileEncodeResult}, |
4 |
| - Decodable, Decoder, Encodable, Encoder, |
5 |
| -}; |
| 2 | +use rustc_serialize::{Decodable, Encodable}; |
6 | 3 | use std::hash::{Hash, Hasher};
|
7 | 4 | use std::mem::{self, MaybeUninit};
|
8 | 5 |
|
@@ -63,16 +60,6 @@ impl Fingerprint {
|
63 | 60 | pub fn to_hex(&self) -> String {
|
64 | 61 | format!("{:x}{:x}", self.0, self.1)
|
65 | 62 | }
|
66 |
| - |
67 |
| - pub fn decode_opaque(decoder: &mut opaque::Decoder<'_>) -> Result<Fingerprint, String> { |
68 |
| - let mut bytes: [MaybeUninit<u8>; 16] = MaybeUninit::uninit_array(); |
69 |
| - |
70 |
| - decoder.read_raw_bytes(&mut bytes)?; |
71 |
| - |
72 |
| - let [l, r]: [u64; 2] = unsafe { mem::transmute(bytes) }; |
73 |
| - |
74 |
| - Ok(Fingerprint(u64::from_le(l), u64::from_le(r))) |
75 |
| - } |
76 | 63 | }
|
77 | 64 |
|
78 | 65 | impl std::fmt::Display for Fingerprint {
|
@@ -130,55 +117,22 @@ impl stable_hasher::StableHasherResult for Fingerprint {
|
130 | 117 | impl_stable_hash_via_hash!(Fingerprint);
|
131 | 118 |
|
132 | 119 | impl<E: rustc_serialize::Encoder> Encodable<E> for Fingerprint {
|
| 120 | + #[inline] |
133 | 121 | fn encode(&self, s: &mut E) -> Result<(), E::Error> {
|
134 |
| - s.encode_fingerprint(self) |
| 122 | + let bytes: [u8; 16] = unsafe { mem::transmute([self.0.to_le(), self.1.to_le()]) }; |
| 123 | + s.emit_raw_bytes(&bytes)?; |
| 124 | + Ok(()) |
135 | 125 | }
|
136 | 126 | }
|
137 | 127 |
|
138 | 128 | impl<D: rustc_serialize::Decoder> Decodable<D> for Fingerprint {
|
| 129 | + #[inline] |
139 | 130 | fn decode(d: &mut D) -> Result<Self, D::Error> {
|
140 |
| - d.decode_fingerprint() |
141 |
| - } |
142 |
| -} |
143 |
| - |
144 |
| -pub trait FingerprintEncoder: rustc_serialize::Encoder { |
145 |
| - fn encode_fingerprint(&mut self, f: &Fingerprint) -> Result<(), Self::Error>; |
146 |
| -} |
147 |
| - |
148 |
| -pub trait FingerprintDecoder: rustc_serialize::Decoder { |
149 |
| - fn decode_fingerprint(&mut self) -> Result<Fingerprint, Self::Error>; |
150 |
| -} |
151 |
| - |
152 |
| -impl<E: rustc_serialize::Encoder> FingerprintEncoder for E { |
153 |
| - default fn encode_fingerprint(&mut self, _: &Fingerprint) -> Result<(), E::Error> { |
154 |
| - panic!("Cannot encode `Fingerprint` with `{}`", std::any::type_name::<E>()); |
155 |
| - } |
156 |
| -} |
157 |
| - |
158 |
| -impl FingerprintEncoder for opaque::Encoder { |
159 |
| - fn encode_fingerprint(&mut self, f: &Fingerprint) -> EncodeResult { |
160 |
| - let bytes: [u8; 16] = unsafe { mem::transmute([f.0.to_le(), f.1.to_le()]) }; |
161 |
| - self.emit_raw_bytes(&bytes)?; |
162 |
| - Ok(()) |
163 |
| - } |
164 |
| -} |
165 |
| - |
166 |
| -impl FingerprintEncoder for opaque::FileEncoder { |
167 |
| - fn encode_fingerprint(&mut self, f: &Fingerprint) -> FileEncodeResult { |
168 |
| - let bytes: [u8; 16] = unsafe { mem::transmute([f.0.to_le(), f.1.to_le()]) }; |
169 |
| - self.emit_raw_bytes(&bytes) |
170 |
| - } |
171 |
| -} |
172 |
| - |
173 |
| -impl<D: rustc_serialize::Decoder> FingerprintDecoder for D { |
174 |
| - default fn decode_fingerprint(&mut self) -> Result<Fingerprint, D::Error> { |
175 |
| - panic!("Cannot decode `Fingerprint` with `{}`", std::any::type_name::<D>()); |
176 |
| - } |
177 |
| -} |
| 131 | + let mut bytes: [MaybeUninit<u8>; 16] = MaybeUninit::uninit_array(); |
| 132 | + d.read_raw_bytes(&mut bytes)?; |
178 | 133 |
|
179 |
| -impl FingerprintDecoder for opaque::Decoder<'_> { |
180 |
| - fn decode_fingerprint(&mut self) -> Result<Fingerprint, String> { |
181 |
| - Fingerprint::decode_opaque(self) |
| 134 | + let [l, r]: [u64; 2] = unsafe { mem::transmute(bytes) }; |
| 135 | + Ok(Fingerprint(u64::from_le(l), u64::from_le(r))) |
182 | 136 | }
|
183 | 137 | }
|
184 | 138 |
|
|
0 commit comments