Size: a a a

2020 April 04

G

Gymmasssorla in rust_offtopic
polunin.ai
У меня там были графы, и мне нужно было держать ссылки на поля нод из других нод, а потом мутировать поля ещё.
F
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
У меня там были графы, и мне нужно было держать ссылки на поля нод из других нод, а потом мутировать поля ещё.
Арены и погнали
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Арены и погнали
Нельзя держать две мутабельные ссылки или мутабельную и иммутабельную рядом.
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
Нельзя держать две мутабельные ссылки или мутабельную и иммутабельную рядом.
Тебе нужна будет только мутабельная ссылка на саму арену
источник

DS

Doge Shibu in rust_offtopic
Ссылок на элементы из неё официально не будет, потому что это не ссылки, а индексы в арене
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Тебе нужна будет только мутабельная ссылка на саму арену
И что мне это даст?
источник

p

polunin.ai in rust_offtopic
Мне нужно в полях хранить ссылки на другие поля
источник

p

polunin.ai in rust_offtopic
Ну тут скорее я хуево продумал все
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
Мне нужно в полях хранить ссылки на другие поля
Везде где были ссылки, будут индексы на элементы в арене
источник

p

polunin.ai in rust_offtopic
Хм
источник

p

polunin.ai in rust_offtopic
Можно было бы и индексы хранить, да
источник

DS

Doge Shibu in rust_offtopic
Считай, что у тебя сишка, только вместо указателей - индексы на арену.

(А это оно и есть, на самом деле, если отключить баунд чеки)
источник

p

polunin.ai in rust_offtopic
А из арены можно вытащить владение?
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
А из арены можно вытащить владение?
В смысле изъять элемент оттуда?
источник

p

polunin.ai in rust_offtopic
Да
источник

DS

Doge Shibu in rust_offtopic
Тут уже зависит от того, как арену сделаешь
источник

DS

Doge Shibu in rust_offtopic
Можно через mem::replace
источник

p

polunin.ai in rust_offtopic
Ну я в typed_arena вроде не нашел такого
источник

DS

Doge Shibu in rust_offtopic
Если у тебя в арене массив Option, то тогда очевидно как
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
Ну я в typed_arena вроде не нашел такого
Так делай свою арену под задачу
источник