icydb_base/validator/hash.rs
1use crate::{core::traits::Validator, prelude::*};
2
3///
4/// Sha256
5///
6
7#[validator]
8pub struct Sha256 {}
9
10impl Validator<str> for Sha256 {
11 fn validate(&self, s: &str) -> Result<(), String> {
12 // len
13 if s.len() != 64 {
14 return Err(format!("must be 64 characters, got {}", s.len()));
15 }
16
17 // hex
18 if !s.chars().all(|c| c.is_ascii_hexdigit()) {
19 return Err("must contain only hexadecimal characters (0-9, a-f)".to_string());
20 }
21
22 Ok(())
23 }
24}