Следующие компилируются:
pub struct Reader<'a> {
position: uint,
data: &'a [u8]
}
Это читатель, который принимает вектор (фактически срез) типа u8
в качестве ссылки, и я указываю время жизни.
Однако это не совсем то, что я хочу. Я хочу иметь возможность сделать структуру generic, а если быть более точным, я хочу сказать, что тип должен быть срезом чего угодно. Я попробовал это для начала:
pub struct Reader<'a, T> {
position: uint,
data: &'a T
}
Это не означает, что T
является срезом, но это уже не с сообщением:
тип параметра
T
может не прожить достаточно долго; рассмотрим добавление явной привязки времени жизниT:'a
...
Хорошо, поэтому мне просто нужно было указать время жизни.
Но теперь моя проблема в том, что как сделать его общим для slice-типа и иметь время жизни? Я пробовал такие вещи, как Reader<'a, T: 'a Vec>
и T: 'a [T]
но я понятия не имею, как я должен это обозначать, и официальное руководство не похоже на такой случай.
Я просто хочу построить Reader, который принимает любой тип среза, заимствуя его, и предоставляет методы для работы с данными (только для чтения).