Skip to main content

muster/domain/value/
project_name.rs

1use nutype::nutype;
2
3/// A registered project's display name: trimmed and non-empty.
4#[nutype(
5    sanitize(trim),
6    validate(not_empty),
7    derive(
8        Debug,
9        Clone,
10        PartialEq,
11        Eq,
12        Hash,
13        AsRef,
14        Display,
15        Serialize,
16        Deserialize
17    )
18)]
19pub struct ProjectName(String);
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24
25    #[test]
26    fn trims_and_rejects_empty() {
27        assert_eq!(
28            ProjectName::try_new("  muster  ").unwrap().as_ref(),
29            "muster"
30        );
31        assert!(ProjectName::try_new("   ").is_err());
32    }
33}