Re:Why writing a linked list in safe Rust is so damned hard
by mehrdadn on Thursday February 22, 2018 @07:42PM
(#16443100)
Hmm... that doesn't make sense. Weak references are for refcounted values. There does not need to be any refcounting involved here at all.
Re:Why writing a linked list in safe Rust is so damned hard
by Retra on Thursday February 22, 2018 @08:02PM
(#16443250)
There's no safe, general way to do shared ownership without ref counting or garbage collection. You can't expect Rust to provide one; it already provides ref counting and raw pointers, which is as good as any other Non-GC language does.
Re:Why writing a linked list in safe Rust is so damned hard
by vvanders on Thursday February 22, 2018 @07:49PM
(#16443143)
Yes but single owner and refcount of 1 are semantically the same. If you want to be strict about this just keep the Rc private to the implementations and only hand out Weak<T>.
Re:Why writing a linked list in safe Rust is so damned hard
by mehrdadn on Thursday February 22, 2018 @07:52PM
(#16443173)
So you're suggesting we add a refcount to every value because it can be made to be semantically the same as not having one?
Re:Why writing a linked list in safe Rust is so damned hard
by vvanders on Thursday February 22, 2018 @07:56PM
(#16443206)
If you want to stay in safe Rust, sure. If that's too much overhead feel free to drop down to unsafe and do it just like in C/C++.
FWIW Rc is pretty lightweight. Arc is the heavier(and threadsafe) variant.
Rust has support for weak references[1] to support this exact use case.
For 90% of uses cases A owns B tends to produce much cleaner architecture. Having ambiguous ownership is just a recipe for resource leaks and non-deterministic behavior.
[1] https://doc.rust-lang.org/std/rc/struct.Weak.html