Function email_address_list::parse_address_list
source · pub fn parse_address_list<T>(address_list: &T) -> Result<AddressList>where
T: AsRef<str>,
T: ?Sized,
Expand description
Get an AddressList
from a string
Tries its best to come up with the most reasonable parsed address list for a given (potentially spec-violating) input.
If there’s nothing to parse (i.e. an empty string), this function “fails”
with Error::Empty
, which is essentially equivalent to a None
, but
avoids nesting types.
Examples
Named malformed group:
let input = r#"Kikundi: , "Jina" (Maoni) <jina@example.org>, baruapepe@example.org;"#;
let result = parse_address_list(input).unwrap();
let manual: AddressList = Group::new("Kikundi").set_contacts(vec![
Contact::new("jina@example.org").set_name("Jina").set_comment("Maoni"),
Contact::new("baruapepe@example.org")
]).into();
assert!(result.deep_eq(&manual));
Multiple contacts, some of which may be malformed:
let input = r#"Przykład <przykład@example.org>, Példa, Rosszformázott <példa@example.org>"#;
let manual: AddressList = vec![
Contact::new("przykład@example.org").set_name("Przykład"),
Contact::new("példa@example.org").set_name("Példa, Rosszformázott"),
].into();
println!("{:?}", manual);
let result = parse_address_list(input).unwrap();
assert!(result.deep_eq(&manual));
Supplying an empty string:
match parse_address_list("") {
Err(error::Error::Empty) => assert!(true),
Ok(_) | Err(_) => assert!(false),
};