Size: a a a

2020 November 11

НТ

Никита Тыманович... in Rust Beginners
red75prime
Ссылки подходят только если время жизни объекта статически известно.
Мб не так выразился.
let x : RefCell<u8>
Теперь передавать x.borrow() в любых количествах куда угодно. Так зачем мне еще к этому Rc<>
источник

r

red75prime in Rust Beginners
Никита Тыманович
Мб не так выразился.
let x : RefCell<u8>
Теперь передавать x.borrow() в любых количествах куда угодно. Так зачем мне еще к этому Rc<>
В этом случае не обязательно, но придётся прописывать лайфтайм во все структуры, которые сохраняют эту ссылку.
источник

Е

Егор in Rust Beginners
подскажите, почему ему не нравится этот lifetime https://gist.github.com/dark0ghost/34a80828caa747a5501996a6e3bdd2e9  и код  https://gist.github.com/dark0ghost/b13517b3d6f9672f5fc6a6ddf5b16275
источник

НТ

Никита Тыманович... in Rust Beginners
red75prime
В этом случае не обязательно, но придётся прописывать лайфтайм во все структуры, которые сохраняют эту ссылку.
А добавление наверх Rc к RefCell меня как-то спасет от лайфтаймов?
источник

НТ

Никита Тыманович... in Rust Beginners
если я действиетльно буду хранить ссылку. Если просто использовать, то лайфтаймы не нужны же
источник

r

red75prime in Rust Beginners
Никита Тыманович
А добавление наверх Rc к RefCell меня как-то спасет от лайфтаймов?
Да. В структурах будет лежать Rc<RefCell<T>>, а не &'a RefCell<T>
источник

r

red75prime in Rust Beginners
Никита Тыманович
если я действиетльно буду хранить ссылку. Если просто использовать, то лайфтаймы не нужны же
Нужны, но обычно lifetime elision позволяет их не писать.
источник

MK

Marat Khayrutdinov in Rust Beginners
Никита Тыманович
Мб не так выразился.
let x : RefCell<u8>
Теперь передавать x.borrow() в любых количествах куда угодно. Так зачем мне еще к этому Rc<>
источник

НТ

Никита Тыманович... in Rust Beginners
red75prime
Нужны, но обычно lifetime elision позволяет их не писать.
ну понятно, что если я их не вижу, то это не значит, что их нет)
источник

НТ

Никита Тыманович... in Rust Beginners
red75prime
Да. В структурах будет лежать Rc<RefCell<T>>, а не &'a RefCell<T>
А вот тут мне надо поразмыслить, спасибо за ответ)
источник

НТ

Никита Тыманович... in Rust Beginners
ох, еще один вопрос, который возник сразу после просмотра ссылки вместе с ответом по ней)
источник

MK

Marat Khayrutdinov in Rust Beginners
Никита Тыманович
ох, еще один вопрос, который возник сразу после просмотра ссылки вместе с ответом по ней)
Там третий абзац первого ответа озвучивает всю суть проблемы. Тема немного другая, но идея такая, что RC - для того, чтобы шарить, а RefCell для того, чтобы мутировать.
источник

MK

Marat Khayrutdinov in Rust Beginners
Насколько я понял
источник

НТ

Никита Тыманович... in Rust Beginners
вообще эти многократно вложенные контейнеры - краеугольный камень раста, сегодня чета клюнуло с ними разобраться
источник

MK

Marat Khayrutdinov in Rust Beginners
Никита Тыманович
вообще эти многократно вложенные контейнеры - краеугольный камень раста, сегодня чета клюнуло с ними разобраться
Мне не нравится, как это выглядит, если честно. Но я не настолько хорошо понимаю это все, чтобы критиковать.
источник

Е

Егор in Rust Beginners
кто знает?
источник

r

red75prime in Rust Beginners
Marat Khayrutdinov
Там третий абзац первого ответа озвучивает всю суть проблемы. Тема немного другая, но идея такая, что RC - для того, чтобы шарить, а RefCell для того, чтобы мутировать.
Шареные ссылки (&T) тоже чтобы шарить, но можно шарить только то, что лежит выше по стеку.
источник

MK

Marat Khayrutdinov in Rust Beginners
red75prime
Шареные ссылки (&T) тоже чтобы шарить, но можно шарить только то, что лежит выше по стеку.
Со ссылками-то и lifetime, имхо, все вполне очевидно и просто.
источник

НТ

Никита Тыманович... in Rust Beginners
Marat Khayrutdinov
Мне не нравится, как это выглядит, если честно. Но я не настолько хорошо понимаю это все, чтобы критиковать.
вот-вот) Но если ты хорошо это будешь понимать, то критиковать уже не будешь. Так что да, хоть это и похоже на "bad practices", но нужно мочь представить в голове, как это работает.
источник

/

/bin/cat in Rust Beginners
Stas Hehera
а как переместить в вектор?
Для бинарных форматов есть куча крейтов
источник