mirror of
https://github.com/chatmail/core.git
synced 2026-05-22 16:26:31 +03:00
Use slice patterns in EmailAddress::from_str()
This commit is contained in:
committed by
Alexander Krotov
parent
0327000f8d
commit
cb92579461
@@ -494,24 +494,25 @@ impl FromStr for EmailAddress {
|
|||||||
ensure!(!input.is_empty(), "empty string is not valid");
|
ensure!(!input.is_empty(), "empty string is not valid");
|
||||||
let parts: Vec<&str> = input.rsplitn(2, '@').collect();
|
let parts: Vec<&str> = input.rsplitn(2, '@').collect();
|
||||||
|
|
||||||
ensure!(parts.len() > 1, "missing '@' character");
|
match &parts[..] {
|
||||||
let local = parts[1];
|
[domain, local] => {
|
||||||
let domain = parts[0];
|
ensure!(
|
||||||
|
!local.is_empty(),
|
||||||
|
"empty string is not valid for local part"
|
||||||
|
);
|
||||||
|
ensure!(domain.len() > 3, "domain is too short");
|
||||||
|
|
||||||
ensure!(
|
let dot = domain.find('.');
|
||||||
!local.is_empty(),
|
ensure!(dot.is_some(), "invalid domain");
|
||||||
"empty string is not valid for local part"
|
ensure!(dot.unwrap() < domain.len() - 2, "invalid domain");
|
||||||
);
|
|
||||||
ensure!(domain.len() > 3, "domain is too short");
|
|
||||||
|
|
||||||
let dot = domain.find('.');
|
Ok(EmailAddress {
|
||||||
ensure!(dot.is_some(), "invalid domain");
|
local: (*local).to_string(),
|
||||||
ensure!(dot.unwrap() < domain.len() - 2, "invalid domain");
|
domain: (*domain).to_string(),
|
||||||
|
})
|
||||||
Ok(EmailAddress {
|
}
|
||||||
local: local.to_string(),
|
_ => bail!("missing '@' character"),
|
||||||
domain: domain.to_string(),
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user