1use std::fmt::Formatter;
2
3use crate::{Obfuscate, compute_hash};
4
5impl Obfuscate for u32 {
6 fn obfuscate(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
7 f.write_str(hex::encode(compute_hash(&self.to_le_bytes())).as_str())
8 }
9}
10
11impl Obfuscate for [u8] {
12 fn obfuscate(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
13 f.write_str(hex::encode(compute_hash(self)).as_str())
14 }
15}
16
17impl Obfuscate for Vec<u8> {
18 fn obfuscate(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
19 (**self).obfuscate(f)
20 }
21}
22
23impl<T: Obfuscate> Obfuscate for Vec<T> {
24 fn obfuscate(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
25 f.write_str("[")?;
26 for item in self.iter() {
27 item.obfuscate(f)?;
28 }
29 f.write_str("]")
30 }
31}
32
33impl<T: Obfuscate> Obfuscate for Option<T> {
34 fn obfuscate(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
35 match self {
36 Some(item) => {
37 f.write_str("Some(")?;
38 item.obfuscate(f)?;
39 f.write_str(")")
40 }
41 None => f.write_str("None"),
42 }
43 }
44}