Hacker News new | ask | show | jobs
by PudgePacket 2451 days ago
You don't need unsafe. This point is brought up a lot, though I understand where the misunderstanding can come from.

Rust is perfectly capable of expressing graphs with zero unsafe code, just currently not in the most optimum implementation.

2 comments

Is is fine, or suboptimal to the point of being impractical? Genuine question, how bad is this, if quanified?
You need to use reference counting or a scoped memory pool. It's totally fine in almost all cases.

Refcounting in Rust is still faster than refcounting in ObjC or Swift (because Rust can avoid using atomics or increasing counts in many cases), but people who use Rust tend to insist on zero overhead, and a truly flexible zero-overhead solution can't be verified statically.

It is fine and practical.
Adjacency matrices are trivial to implement in Rust. I leverage graphs constantly.
It's slow.
You don't even need "not the most optimum implementation" (assuming you're talking about index-based graphs or something).

You can make non-leaking pointer-based graphs in safe Rust using reference counting (basically what C# does, if you squint) or arenas (if your nodes' lifetimes fit that pattern).