Исходя из Python, у меня возникли проблемы с пониманием жизни.Я пытаюсь реализовать эту тривиальную функцию, чтобы вернуть Option<String>
, но я не могу ее получить.Все, что я смог сделать до сих пор, это:
fn match_exception(exception: Option<String>) -> String {
let piles = ["a", "b"];
exception
.unwrap_or("".to_string())
.split(',')
.map(|exc| exc.trim())
.filter(|exc| piles.contains(exc))
.next()
.unwrap_or("")
.to_string()
}
Это возвращает String
(не говоря уже о том, что мне это кажется очень неуклюжим), но я надеялся, что он вернется в том же форматечто он вошел, Option<String>
.
Если я удаляю все после вызова next
, он возвращает Option<&str>
, и если я перехожу и определяю ожидаемый тип возврата на Option<&str>
, он жалуется на то, что у меня нетНе устанавливайте время жизни:
error[E0106]: missing lifetime specifier
--> src/lib.rs:1:57
|
1 | fn match_exception(exception: Option<String>) -> Option<&str> {
| ^ expected lifetime parameter
|
= help: this function's return type contains a borrowed value with an elided lifetime, but the lifetime cannot be derived from the arguments
= help: consider giving it an explicit bounded or 'static lifetime
Может кто-нибудь подтолкнуть меня в правильном направлении или объяснить это немного более простым способом?