Block внутри которой есть &’a [u8]
Соответсвенно у блока лт <‘a>
соответственно у меня impl Block требует <‘_>
Также у меня есть структура Chain которая содержит Vec<Block<‘a>>
Также есть impl Chain<‘_> внутри которого есть метод сигнатурой fn add(&mut self, block: Block), который вызывает .push(block) для вектора внутри Chain
Проблема: при компиляции возникает lifetime mismatch. Потому что у impl Chain стоит <‘_> один лт а у блока который передается в add() другой.
Без объявления слайса внутри Block, а, как следствие, без объявления ЛТ - все компилируется. Но мне нужен слайс, потому что у меня нужно держать в блоке массив байт, размер которого не известен в compile-time
Вопрос: Почему возникает конфликт лт (скорее всего догадываюсь, но хочу удостовериться)? И как исправить проблему?
А как можно держать массив не известного размера?
ну так у меня есть в Block поле data, размер которого заранее не может быть известен - поэтому я использую слайс и при создании блока в рантайме размер фиксирован
Обсуждают сегодня