aster_forge_validation/
lib.rs1#![deny(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
8#![cfg_attr(
9 not(test),
10 deny(
11 clippy::unwrap_used,
12 clippy::unreachable,
13 clippy::expect_used,
14 clippy::panic,
15 clippy::unimplemented,
16 clippy::todo
17 )
18)]
19
20pub mod display;
22pub mod email;
24pub mod email_policy;
26pub mod filename;
28
29pub type Result<T> = std::result::Result<T, ValidationError>;
31
32#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
34#[error("{message}")]
35pub struct ValidationError {
36 message: String,
37}
38
39impl ValidationError {
40 pub fn new(message: impl Into<String>) -> Self {
42 Self {
43 message: message.into(),
44 }
45 }
46
47 pub fn message(&self) -> &str {
49 &self.message
50 }
51}
52
53#[cfg(test)]
54mod tests {
55 use super::ValidationError;
56
57 #[test]
58 fn validation_error_preserves_and_displays_message() {
59 let error = ValidationError::new("invalid value");
60
61 assert_eq!(error.message(), "invalid value");
62 assert_eq!(error.to_string(), "invalid value");
63 }
64}