mirror of
https://github.com/openharmony/third_party_rust_rust.git
synced 2026-07-19 11:43:39 -04:00
fix wrapping
This commit is contained in:
@@ -29,22 +29,21 @@ Rust book) to the `nested_borrow_mut` and `borrow_mut` functions. In both cases
|
||||
the input is a reference to `self`, so the compiler attempts to assign the
|
||||
the same lifetime to the input and output.
|
||||
|
||||
Looking specifically at `nested_borrow_mut`,
|
||||
we see that there are three object references to keep track of,
|
||||
along with their associated lifetimes:
|
||||
Looking specifically at `nested_borrow_mut`, we see that there are three object
|
||||
references to keep track of, along with their associated lifetimes:
|
||||
- `self` (which is a `&mut T`)
|
||||
- `u_ref` (which is a `&mut U`)
|
||||
- `v_ref` (which is a `&mut V`)
|
||||
|
||||
The `borrow_mut()` method implicitly requires that that the input and output
|
||||
have the same lifetime bounds. Thus:
|
||||
have the same lifetime bounds. Thus the lines:
|
||||
|
||||
```rust
|
||||
let u_ref = self.borrow_mut();
|
||||
let v_ref = u_ref.borrow_mut();
|
||||
```
|
||||
|
||||
Imply that `u_ref` and `self` must share a lifetime bound, and also that
|
||||
imply that `u_ref` and `self` must share a lifetime bound, and also that
|
||||
`v_ref` and `u_ref` share a lifetime bound. The problem is that the function
|
||||
signature for `nested_borrow_mut` only gives the compiler information about the
|
||||
lifetimes of `self` and `v_ref` -- nothing about `u_ref`.
|
||||
|
||||
Reference in New Issue
Block a user