3 ms·
>In Rust you can write a function that returns the pointer of one element of a slice. Have fun fighting the borrow checker on that one.
by ok123456 4y ago
>In Rust you can write a function that returns the pointer of one element of a slice.
Have fun fighting the borrow checker on that one.
- oconnor663 4y agoIt's not always so bad :) https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=097719766a5dc1ae2703813565793f5e https://play.rust-lang.org/?version=stable&mode=debug&editio...
- ok123456 4y agoNow try to actually do that in a larger program without static lifetimes...
- piperswe 4y agoIt shouldn't be too bad as long as you keep in mind that it is a reference to an item in that slice, so whatever that slice is pointing to needs to stick around as long as you're using elements from it. I don't often encounter borrow checker issues anymore, because once you program Rust long enough you know what things need to live for what lifetimes, and you architect your "larger programs" around that.
- deleted 4y ago[deleted]
- ithkuil 4y agoYes and that's the whole point! The borrow checker ensures that you either do it right or you find another way that is safe. For example it may be totally fine to help allocate a result, not all programs need to be optimized to the bone. Just return a boxed value. If you need to share it, wrap it in an Rc or Arc. One problem I see with it is that rust chooses to make the most efficient way of programming also the most "simple looking", and so it lines up incentives in such a way that people will unnecessarily try to avoid using an extra Arc just because it looks like unnecessary clutter. When you learn to embrace your boxing you'll learn that the borrow checker is not your enemy.