пример который у меня есть до такого:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=8ce738e963a843d7be00c7f2f3582273
Я рад, что оно не даёт получить &'static ссылку в main(), но не понимаю почему именно, т.к. по идее то сигнатуры всех функций должны возвращать 'static штуковины. И почему оно вообще даёт сделать функцию serialize_byte().
(ну, мне статик и не нужен, я просто у себя в коде примерно что-то такое сделал и оно работает так как я и хотел, но не понимаю почему оно разрешило конвертнуть произвольный лайфтайм в 'static, а затем всё-таки проверять, что я не ерунду какую-то делаю)
serialized.data() Берёт временный лт на значение на стеке serialized, если бы можно было бы взять 'static ссылку, то всё было бы ок https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=46e7194bf6c4156674fed35029927a34
Хмм, прикольно. Меня просто запутывает то, что у меня есть <'a, T: FromBytes<'a> + 'a> SerializedOwned<'a, T>, 'a у меня вроде как 'static, но при этом fn data(&'a self) на самом деле не равно fn data(&'static self). Для меня выглядит как какое-то неявное сужение 'static / какие-то костыли для таких случаев чтобы не развалилось всё.
Эти "костыли" называются subtyping
JustByte<'static> можно получить только из &'static [u8], а в билдере обычный смертный Vec<u8>
Обсуждают сегодня