- d.decode_fingerprint()
- }
-}
-
-pub trait FingerprintEncoder: rustc_serialize::Encoder {
- fn encode_fingerprint(&mut self, f: &Fingerprint) -> Result<(), Self::Error>;
-}
-
-pub trait FingerprintDecoder: rustc_serialize::Decoder {
- fn decode_fingerprint(&mut self) -> Result<Fingerprint, Self::Error>;
-}
-
-impl<E: rustc_serialize::Encoder> FingerprintEncoder for E {
- default fn encode_fingerprint(&mut self, _: &Fingerprint) -> Result<(), E::Error> {
- panic!("Cannot encode `Fingerprint` with `{}`", std::any::type_name::<E>());
- }
-}
-
-impl FingerprintEncoder for opaque::Encoder {
- fn encode_fingerprint(&mut self, f: &Fingerprint) -> EncodeResult {
- let bytes: [u8; 16] = unsafe { mem::transmute([f.0.to_le(), f.1.to_le()]) };
- self.emit_raw_bytes(&bytes);
- Ok(())
- }
-}
-
-impl FingerprintEncoder for opaque::FileEncoder {
- fn encode_fingerprint(&mut self, f: &Fingerprint) -> FileEncodeResult {
- let bytes: [u8; 16] = unsafe { mem::transmute([f.0.to_le(), f.1.to_le()]) };
- self.emit_raw_bytes(&bytes)
- }
-}
-
-impl<D: rustc_serialize::Decoder> FingerprintDecoder for D {
- default fn decode_fingerprint(&mut self) -> Result<Fingerprint, D::Error> {
- panic!("Cannot decode `Fingerprint` with `{}`", std::any::type_name::<D>());
- }
-}
-
-impl FingerprintDecoder for opaque::Decoder<'_> {
- fn decode_fingerprint(&mut self) -> Result<Fingerprint, String> {
- Fingerprint::decode_opaque(self)