ps-ecc 0.1.0-9

Generates Reed-Solomon error correction codes.
Documentation
use std::hash::{Hash, Hasher};

use crate::Cow;

impl Hash for Cow<'_> {
    fn hash<H: Hasher>(&self, state: &mut H) {
        (**self).hash(state);
    }
}

#[cfg(test)]
mod tests {
    use std::hash::{DefaultHasher, Hash, Hasher};

    use ps_buffer::Buffer;

    use crate::Cow;

    type TestError = Box<dyn std::error::Error>;

    fn hash(value: &Cow) -> u64 {
        let mut hasher = DefaultHasher::new();

        value.hash(&mut hasher);

        hasher.finish()
    }

    #[test]
    fn test_hash_agrees_across_variants() -> Result<(), TestError> {
        let borrowed = Cow::Borrowed(b"abc");
        let owned = Cow::Owned(Buffer::from_slice(b"abc")?.share());

        assert_eq!(hash(&borrowed), hash(&owned));

        Ok(())
    }
}