Hacker News new | ask | show | jobs
by brighteyes 2451 days ago
Rust would have tradeoffs here, though. For example, in C# you'd be able to do (non-leaking) graphs and other structures in 100% safe code, while Rust would need unsafe.
2 comments

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.

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).

It doesn't need to be unsafe or unoptimal, just use indices into flat memory instead of pointers.