azure_storage_blobs/options/
hash.rs
1use azure_core::{
2 base64,
3 headers::{self, Header, CONTENT_MD5},
4};
5use azure_storage::headers::CONTENT_CRC64;
6
7#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord)]
8pub enum Hash {
9 MD5([u8; 16]),
10 CRC64(u64),
11}
12
13impl Header for Hash {
14 fn name(&self) -> headers::HeaderName {
15 match self {
16 Hash::MD5(_) => CONTENT_MD5,
17 Hash::CRC64(_) => CONTENT_CRC64,
18 }
19 }
20
21 fn value(&self) -> headers::HeaderValue {
22 match self {
23 Hash::MD5(md5) => base64::encode(md5),
24 Hash::CRC64(crc64) => format!("{crc64}"),
25 }
26 .into()
27 }
28}
29
30impl From<[u8; 16]> for Hash {
31 fn from(md5: [u8; 16]) -> Self {
32 Hash::MD5(md5)
33 }
34}
35
36#[cfg(feature = "md5")]
37impl From<md5::Digest> for Hash {
38 fn from(md5: md5::Digest) -> Self {
39 Hash::MD5(md5.0)
40 }
41}