I seguenti compila bene:Come si implementa una struttura che utilizza un vettore generico con annotazioni a vita?
pub struct Reader<'a> {
position: uint,
data: &'a [u8]
}
Si tratta di un lettore che prende un vettore (in realtà una fetta) di tipo u8
come riferimento, e mi specificare la durata.
Tuttavia, questo non è esattamente quello che voglio. Voglio essere in grado di rendere la struttura generica e, per essere ancora più precisa, voglio dire che il tipo dovrebbe essere una porzione di qualcosa. Ho provato questo per cominciare:
pub struct Reader<'a, T> {
position: uint,
data: &'a T
}
Esso non denota T
essere una fetta, ma questo è già venendo a mancare con un messaggio:
il tipo di parametro
T
potrebbe non vivere abbastanza a lungo; considerare l'aggiunta di un vita esplicito legatoT:'a
...
Ok così ho dovuto specificare il corso della vita.
Ma ora il mio problema è che come faccio a renderlo generico di tipo slice e avere la vita? Ho provato cose come Reader<'a, T: 'a Vec>
e T: 'a [T]
ma non ho idea di come dovrei denotare questo e la guida ufficiale non sembra trattare un caso come questo.
Desidero semplicemente creare un Reader che raccolga qualsiasi tipo di slice prendendolo in prestito e fornisce metodi per operare sui dati (in modalità di sola lettura).
Molto utile! Grazie per la tua soluzione! – Gedweb