]> git.lizzy.rs Git - rust.git/commitdiff
Apply suggestions from code review
authorMatthew Kelly <matthew.kelly2@gmail.com>
Fri, 19 Aug 2022 13:34:20 +0000 (09:34 -0400)
committerGitHub <noreply@github.com>
Fri, 19 Aug 2022 13:34:20 +0000 (09:34 -0400)
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
compiler/rustc_error_codes/src/error_codes/E0311.md

index 8b5daaaa17865e1d8a8ce09fe05ff8bdc634aee6..a5975c4f472be31b87cf7637ca7cd6453a9cec66 100644 (file)
@@ -1,9 +1,9 @@
-E0311 occurs when there is insufficient information for the rust compiler to
+This error occurs when there is insufficient information for the rust compiler to
 prove that some time has a long enough lifetime.
 
 Erroneous code example:
 
-```compile_fail, E0311
+```compile_fail,E0311
 use std::borrow::BorrowMut;
 
 trait NestedBorrowMut<U, V> {
@@ -13,7 +13,7 @@ trait NestedBorrowMut<U, V> {
 impl<T, U, V> NestedBorrowMut<U, V> for T
 where
     T: BorrowMut<U>,
-    U: BorrowMut<V>,  // missing lifetime specifier here --> compile fail
+    U: BorrowMut<V>, // error: missing lifetime specifier
 {
     fn nested_borrow_mut(&mut self) -> &mut V {
         self.borrow_mut().borrow_mut()
@@ -21,12 +21,11 @@ where
 }
 ```
 
-In this example we have a trait that borrows some inner data element of type V
-from an outer type T, through an intermediate type U. The compiler is unable to
-prove that the livetime of U is long enough to support the reference, so it
-throws E0311. To fix the issue we can explicitly add lifetime specifiers to the
-trait, which link the lifetimes of the various data types and allow the code
-to compile.
+In this example we have a trait that borrows some inner data element of type `V`
+from an outer type `T`, through an intermediate type `U`. The compiler is unable to
+prove that the livetime of `U` is long enough to support the reference. To fix the
+issue we can explicitly add lifetime specifiers to the `NestedBorrowMut` trait, which
+link the lifetimes of the various data types and allow the code to compile.
 
 Working implementation of the `NestedBorrowMut` trait:
 
@@ -40,7 +39,7 @@ trait NestedBorrowMut<'a, U, V> {
 impl<'a, T, U, V> NestedBorrowMut<'a, U, V> for T
 where
     T: BorrowMut<U>,
-    U: BorrowMut<V> + 'a,
+    U: BorrowMut<V> + 'a, // Adding lifetime specifier
 {
     fn nested_borrow_mut(&'a mut self) -> &'a mut V {
         self.borrow_mut().borrow_mut()