muster/domain/value/
process_name.rs1use nutype::nutype;
2
3#[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 ProcessName(String);
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn trims_surrounding_whitespace() {
27 let name = ProcessName::try_new(" Claude Code ").unwrap();
28 assert_eq!(name.as_ref(), "Claude Code");
29 }
30
31 #[test]
32 fn rejects_empty_and_whitespace_only() {
33 assert!(ProcessName::try_new("").is_err());
34 assert!(ProcessName::try_new(" ").is_err());
35 }
36}