use std::convert::TryInto;
use std::hash::{Hash, Hasher};
+#[cfg(test)]
+mod tests;
+
#[derive(Eq, PartialEq, Ord, PartialOrd, Debug, Clone, Copy)]
#[repr(C)]
pub struct Fingerprint(u64, u64);
let c = a.wrapping_add(b);
- Fingerprint((c >> 64) as u64, c as u64)
+ Fingerprint(c as u64, (c >> 64) as u64)
}
pub fn to_hex(&self) -> String {
impl<D: rustc_serialize::Decoder> Decodable<D> for Fingerprint {
#[inline]
- fn decode(d: &mut D) -> Result<Self, D::Error> {
+ fn decode(d: &mut D) -> Self {
let mut bytes = [0u8; 16];
- d.read_raw_bytes_into(&mut bytes)?;
- Ok(Fingerprint::from_le_bytes(bytes))
+ d.read_raw_bytes_into(&mut bytes);
+ Fingerprint::from_le_bytes(bytes)
}
}
impl<D: rustc_serialize::Decoder> Decodable<D> for PackedFingerprint {
#[inline]
- fn decode(d: &mut D) -> Result<Self, D::Error> {
- Fingerprint::decode(d).map(PackedFingerprint)
+ fn decode(d: &mut D) -> Self {
+ Self(Fingerprint::decode(d))
}
}