address/domain/
from_str.rs

1use std::str::FromStr;
2
3use crate::{Domain, ParseError};
4
5impl FromStr for Domain {
6    type Err = ParseError;
7
8    fn from_str(s: &str) -> Result<Self, Self::Err> {
9        Domain::try_from(s)
10    }
11}
12
13#[cfg(test)]
14mod tests {
15    use std::str::FromStr;
16
17    use crate::ParseError::InvalidDomain;
18    use crate::{Domain, ParseError};
19
20    #[test]
21    fn from_str() {
22        let result: Result<Domain, ParseError> = Domain::from_str("localhost");
23        assert_eq!(result, Ok(Domain::localhost()));
24
25        let result: Result<Domain, ParseError> = Domain::from_str("LocalHost");
26        assert_eq!(result, Ok(Domain::localhost()));
27
28        let result: Result<Domain, ParseError> = Domain::from_str("Local!Host");
29        assert_eq!(result, Err(InvalidDomain));
30    }
31}