Skip to main content

rosace_forms/
error.rs

1/// A validation error on a named field.
2#[derive(Debug, Clone, PartialEq)]
3pub struct FieldError {
4    pub field: String,
5    pub message: String,
6}
7
8impl FieldError {
9    pub fn new(field: impl Into<String>, message: impl Into<String>) -> Self {
10        Self { field: field.into(), message: message.into() }
11    }
12}
13
14impl std::fmt::Display for FieldError {
15    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
16        write!(f, "{}: {}", self.field, self.message)
17    }
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn field_error_new() {
26        let e = FieldError::new("email", "invalid");
27        assert_eq!(e.field, "email");
28        assert_eq!(e.message, "invalid");
29    }
30
31    #[test]
32    fn field_error_display() {
33        let e = FieldError::new("name", "required");
34        assert_eq!(format!("{}", e), "name: required");
35    }
36
37    #[test]
38    fn field_error_clone() {
39        let e = FieldError::new("age", "too young");
40        let c = e.clone();
41        assert_eq!(e, c);
42    }
43}