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}