У меня возникли проблемы с попыткой понять, почему я не могу вернуть значение &str
, полученное от String
(доброта, когда будет готова as_str
?), И я делаю что-то неправильно. Я получаю эту идею, потому что ничто из того, что я делаю, не заставляет ценность жить достаточно долго, чтобы ее использовать.Почему я не могу вернуть значение & str, генерируемое из строки?
Я пытаюсь реализовать error::Error
для настраиваемого структуры:
impl error::Error for LexicalError {
fn description(&self) -> &str {
let s = format!("{}", self);
// s doesn't live long enough to do this, I've tried
// cloning s and using that, but still the clone doesn't
// live long enough.
s.trim()
}
fn cause(&self) -> Option<&error::Error> {
None
}
}
(для полного фрагмента кода, вот playpen)
Я не могу понять, как вернуть & ул от description
, я хотел бы повторно использовать логику Display
, если, конечно, я полностью не понимаю, что должно возвращаться description
(возможно, краткое описание проблемы). Либо я получаю ту же проблему с возвратом format!(...)
, которая является переменной, которую я, похоже, не может прожить достаточно долго, чтобы быть полезной для меня.
'описание' должно быть описание ошибки, не вдаваясь в детали; 'fmt :: Display' должен быть там, чтобы увеличить его с подробной информацией по желанию. –
@ChrisMorgan Я иду из Go как самый последний язык, с которым я играл, и я ошибочно предположил, что метод описания аналогичен методу Go's Error. Спасибо за информацию! –