5 ms·
> The alternative is that you could be using a language that uses highly optimized RAII types on the stack which are impossible to leak, and written by some of
by slezyr 6y ago
> The alternative is that you could be using a language that uses highly optimized RAII types on the stack which are impossible to leak, and written by some of the best programmers in the world so you don’t have to juggle chainsaws.
Please, tell "the best programmers" that it's "impossible to leak" memory. Apparently they do not know this.
https://doc.rust-lang.org/book/ch15-06-reference-cycles.html https://doc.rust-lang.org/book/ch15-06-reference-cycles.html
- orf 6y agoLeak can mean different things. None of those types in the link are stack allocated, I think.
- tediousdemise 6y agoThanks for sharing, I’m unfamiliar with the nuances of Rust’s implementation of RAII as I’m primarily a modern C++ developer. Modern C++ mostly guarantees against leaks since it encourages the stack as much possible. https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#e6-use-raii-to-prevent-leaks https://github.com/isocpp/CppCoreGuidelines/blob/master/CppC...
- allo37 6y agoIt's the same deal as creating a circular references using `std::shared_ptr` in C++.
- hctaw 6y agoOwnership semantics in rust largely prevent circular references, so it's not the same deal
- allo37 6y agoSorry, I'm not a Rust pro, but from the docs about reference cycles linked above: > We can see that Rust allows memory leaks by using Rc<T> and RefCell<T>: it’s possible to create references where items refer to each other in a cycle. This creates memory leaks because the reference count of each item in the cycle will never reach 0, and the values will never be dropped. This sounds a lot like what happens when you create a circular reference with std::shared_ptr ?
- steveklabnik 6y agoYes, it is the same thing.
- hctaw 6y agoYes, but grep for `Rc::new()` in actual rust code bases compared to `shared_ptr` in C++. Interior mutability is cumbersome and not a natural pattern in practice.