3 ms·
I think the part where they're trying to abstract out a `content` method could be made to work by adding braces, so that the `&self` borrow goes away earlier th
by oconnor663 9y ago
I think the part where they're trying to abstract out a `content` method could be made to work by adding braces, so that the `&self` borrow goes away earlier than the end of the function. I think "nonlexical lifetimes" are also going to make more cases like that work automatically without braces soon.
- bluejekyll 9y agoYes. I use that often. It’s ugly though, and lexical lifetimes should help fix this.
- rom1v 9y ago> I think the part where they're trying to abstract out a `content` method could be made to work by adding braces, so that the `&self` borrow goes away earlier than the end of the function. Not in that case. It helps when dropping a borrow earlier avoids to violate the borrowing rules, like in this case: let mut a = [0; 20]; { let b = &mut a[2..4]; } let c = &mut a[6..8]; In the example from the blog post, content borrows the whole struct, and you can't drop the borrow earlier since it is used in the next line.
- oconnor663 9y agoRight, you'd have to split up the following line so that `sum` is computed inside the block but assigned after it.