Sto riscontrando dei problemi nel tentativo di comprendere perché non è possibile restituire un valore &str
generato da un String
(qualità, quando sarà pronto il as_str
?) E sto facendo qualcosa di sbagliato. Ho questa idea perché nulla di ciò che faccio fa vivere il valore abbastanza a lungo da poterlo utilizzare.Perché non posso restituire un valore & str generato da una stringa?
Sto cercando di implementare error::Error
per una struct personalizzato:
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
}
}
(per il frammento di completo, qui è la playpen)
Non riesco a capire come restituire un & str da description
, vorrei riutilizzare la logica Display
, a meno che, ovviamente, non stia completamente fraintendendo cosa dovrebbe restituire description
(forse la breve descrizione del problema). O ottengo lo stesso problema con il ritorno di format!(...)
che è una variabile che non riesco a vivere abbastanza a lungo da essere utile a me.
'description' dovrebbe essere una descrizione dell'errore che non entra nei dettagli; 'fmt :: Display' dovrebbe essere lì per aumentarlo con dettagli come desiderato. –
@ChrisMorgan Vengo dal Go come linguaggio più recente con cui ho giocato e ho erroneamente pensato che il metodo description fosse simile al metodo Go's Error. Grazie per le informazioni! –