Hacker News new | past | comments | ask | show | jobs | submit login

> The entire problem here is incorrectly assuming that "A owns B" implies "A has a pointer to B". I don't know if this is a Rust-imposed constraint in some fashion, but it certainly isn't a necessary one.

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




Hmm... that doesn't make sense. Weak references are for refcounted values. There does not need to be any refcounting involved here at all.


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.


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


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?


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: