4 ms·
No. Rust has RAII so you can have retain on 'clone' operations and release on drops, just like the native Rc/Arc types do. This is, incidentally, how the servo
by xanathar 3y ago
No.
Rust has RAII so you can have retain on 'clone' operations and release on drops, just like the native Rc/Arc types do.
This is, incidentally, how the servo bindings to core-foundation work (I prefer those bindings where there is overlap).
Servo bindings: https://github.com/servo/core-foundation-rs https://github.com/servo/core-foundation-rs
Other crates of interest on this topic:
- https://crates.io/crates/objc https://crates.io/crates/objc
- https://crates.io/crates/block https://crates.io/crates/block
- pjmlp 3y agoSomeone has to manually type .clone() calls.
- xanathar 3y agoIf you don't, the compiler tells you to, as per standard Rust semantics.
- pjmlp 3y agoAutomatic Reference Counting. Writing by hand isn't the same.
- xanathar 3y agoExcept that even Apple's ARC is not automatic - try passing the pointer to a GArray, or putting it on a malloc'ed linked list or any other data structure not implemented in Swift or ObjectiveC (provided that you compile objectiveC with the correct build flags). The point is: you can't leak, you can't end up keeping a reference without incrementing the refcount and you don't events have to worry about any of the refcounting as long as the code you write is sound according to Rust rules.
- pjmlp 3y agoMoving goalposts. We are speaking about the normal development experience, not corner cases or unsafe code.
- deleted 3y ago[deleted]