Folgende compiles fein:Wie implementiere ich eine Struktur, die einen generischen Vektor mit lebenslangen Annotationen verwendet?
pub struct Reader<'a> {
position: uint,
data: &'a [u8]
}
Es ist ein Leser, die einen Vektor (eigentlich eine Scheibe) vom Typ u8
als Referenz, und ich geben Sie die Lebensdauer nimmt.
Dies ist jedoch nicht genau das, was ich will. Ich möchte in der Lage sein, die Struktur generisch zu machen, und um noch genauer zu sein, möchte ich bezeichnen, dass der Typ ein Stück von irgendetwas sein sollte. Ich habe versucht, dies für den Anfang:
pub struct Reader<'a, T> {
position: uint,
data: &'a T
}
Es ist nicht T
nicht bezeichnet eine Scheibe zu sein, aber dies ist bereits mit einer Meldung Fehler:
der Parametertyp
T
möglicherweise nicht lange genug leben; Sehen Sie eine explizite LebensdauerT:'a
...
Ok, so musste ich einfach geben Sie die Lebensdauer gebunden hinzufügen.
Aber jetzt ist mein Problem, dass, wie mache ich es generische Typ Scheibe und habe die Lebensdauer? Ich probierte Dinge wie Reader<'a, T: 'a Vec>
und T: 'a [T]
, aber ich habe keine Ahnung, wie ich das bezeichnen soll und der offizielle Führer scheint sich nicht mit einem Fall wie diesem zu befassen.
Ich möchte einfach einen Reader konstruieren, der jede Art von Slice aufnimmt, indem er sie entleiht, und Methoden zur Verfügung stellt, um mit den Daten zu arbeiten (schreibgeschützt).
Sehr hilfreich! Danke für deine Lösung! – Gedweb