uptrakit_web_api_types/
validation.rs1use std::fmt;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
5pub struct ValidationError {
6 pub field: &'static str,
7 pub message: String,
8}
9
10impl fmt::Display for ValidationError {
11 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
12 write!(f, "{}: {}", self.field, self.message)
13 }
14}
15
16impl std::error::Error for ValidationError {}
17
18pub trait Validate {
20 fn validate(&self) -> Result<(), ValidationError>;
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn validation_error_display() {
29 let err = ValidationError {
30 field: "email",
31 message: "must contain @".to_string(),
32 };
33 assert_eq!(err.to_string(), "email: must contain @");
34 }
35}