// Copyright © 2023 Kim Altintop <kim@eagain.io> // SPDX-License-Identifier: GPL-2.0-only use std::{ fmt, ops::Deref, }; #[derive(Clone, Copy, Debug, Eq, PartialEq)] #[repr(transparent)] pub struct Hash(blake3::Hash); impl Hash { pub fn hash_bytes(bytes: &[u8]) -> Self { blake3::hash(bytes).into() } } impl Deref for Hash { type Target = blake3::Hash; fn deref(&self) -> &Self::Target { &self.0 } } impl From<blake3::Hash> for Hash { fn from(h: blake3::Hash) -> Self { Self(h) } } impl fmt::Display for Hash { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str(self.to_hex().as_ref()) } }