top | item 45594468

(no title)

taylorallred | 4 months ago

For those who are interested, I think that arena allocation is an underrated approach to managing lifetimes of interconnected objects that works well with borrow checking.

discuss

order

haberman|4 months ago

I agree, but in my experience arena allocation in Rust leaves something to be desired. I wrote something about this here: https://blog.reverberate.org/2021/12/19/arenas-and-rust.html

I was previously excited about this project which proposed to support arena allocation in the language in a more fundamental way: https://www.sophiajt.com/search-for-easier-safe-systems-prog...

That effort was focused primarily on learnability and teachability, but it seems like more fundamental arena support could help even for experienced devs if it made patterns like linked lists fundamentally easier to work with.

taylorallred|4 months ago

Thanks for those links. Have you tried using arenas that give out handles (sometimes indexes) instead of mutable references? It's less convenient and you're not leveraging borrow checking but I would imagine it supports Send well.

worik|4 months ago

> works well with borrow checking.

Yes, because it defeats borrow checking.

Unsafe Rust, used directly, works too

celeritascelery|4 months ago

It does not defeat borrow checking. The borrow checker will ensure that objects do not outlive the arena. It works with borrow checking.