default_derive!{ pub struct GalaxyDescription { name: String } } impl TryFrom<&str> for GalaxyDescription { type Error = &'static str; fn try_from(value: &str) -> Result { if value.len() > 0 && value.len() <= 65535 { Ok(GalaxyDescription { name: value.to_string() }) } else { Err("Failed to parse GalaxyDescription") } } } impl Into for GalaxyDescription { fn into(self) -> String { self.name } } #[test] fn oversized() { let id: Result = format!("{:>65536}", "Test").as_str().try_into(); assert!(id.is_err()) } #[test] fn valid1() { let id: Result = "".try_into(); assert_eq!(id, Ok(GalaxyDescription { name: "".to_string() })) } #[test] fn valid2() { let id: Result = "some super long description".try_into(); assert_eq!(id, Ok(GalaxyDescription { name: "some super long description".to_string() })) }