diff options
| author | Matthew Kelly <matthew.kelly2@gmail.com> | 2022-08-25 05:43:59 -0400 |
|---|---|---|
| committer | Matthew Kelly <matthew.kelly2@gmail.com> | 2022-08-25 05:46:47 -0400 |
| commit | 4f194a76c8482ffcd16526a08b1dc489a5a75e96 (patch) | |
| tree | 8abe832811e64907ce89e1a054de9d8837dafe37 /compiler/rustc_error_codes/src | |
| parent | fc02eee8f6b433c8485086d3e97ae499b53b240b (diff) | |
| download | rust-4f194a76c8482ffcd16526a08b1dc489a5a75e96.tar.gz rust-4f194a76c8482ffcd16526a08b1dc489a5a75e96.zip | |
Fix rust-doc error
There was a partial rust code block in the readme that was invalid because of a missing line. I inlined the code snippet into the text to fix the error. This also improves readability a bit.
Diffstat (limited to 'compiler/rustc_error_codes/src')
| -rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0311.md | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0311.md b/compiler/rustc_error_codes/src/error_codes/E0311.md index 9521adc2522..f8c04d54db7 100644 --- a/compiler/rustc_error_codes/src/error_codes/E0311.md +++ b/compiler/rustc_error_codes/src/error_codes/E0311.md @@ -25,35 +25,30 @@ where Why doesn't this code compile? It helps to look at the lifetime bounds that the compiler is automatically adding ("Lifetime Ellision", Chapter 10.3 in the -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 +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 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 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 -`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`. +have the same lifetime bounds. Thus the lines: `let u_ref = self.borrow_mut();` +and `let v_ref = u_ref.borrow_mut();` in `nested_borrow_mut()` above 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`. The way to fix this error is then to explicitly tell the compiler that the lifetime of `u_ref` is the same as `self` and `v_ref`, which then allows it to satisfy the two lifetime bound requirements described above. Here is the working version of the code: -```rust +``` use std::borrow::BorrowMut; trait NestedBorrowMut<'a, U, V> { |
