]> git.lizzy.rs Git - rust.git/commitdiff
Fix rust-doc error
authorMatthew Kelly <matthew.kelly2@gmail.com>
Thu, 25 Aug 2022 09:43:59 +0000 (05:43 -0400)
committerMatthew Kelly <matthew.kelly2@gmail.com>
Thu, 25 Aug 2022 09:46:47 +0000 (05:46 -0400)
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.

compiler/rustc_error_codes/src/error_codes/E0311.md

index 9521adc252225e1a8c05fcc6c12515376f085bbc..f8c04d54db70a59500d6f103e9f4e446ff001c60 100644 (file)
@@ -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> {