]> git.lizzy.rs Git - rust.git/commitdiff
Add E0195 error explanation
authorGuillaume Gomez <guillaume1.gomez@gmail.com>
Mon, 29 Jun 2015 14:00:57 +0000 (16:00 +0200)
committerGuillaume Gomez <guillaume1.gomez@gmail.com>
Tue, 30 Jun 2015 17:21:17 +0000 (19:21 +0200)
src/librustc_typeck/diagnostics.rs

index d4977c5d3941c27dea7ad48d6f0b07740ad9bdcf..1e83c1b6900a4d0631be20a81212a58ec6ad3677 100644 (file)
@@ -1250,6 +1250,44 @@ fn foo() {}
 rfcs/blob/master/text/0019-opt-in-builtin-traits.md).
 "##,
 
+E0195: r##"
+Your method's lifetime parameters do not match the trait declaration.
+Erroneous code example:
+
+```
+trait Trait {
+    fn t<'a,'b:'a>(x: &'a str, y: &'b str);
+}
+
+struct Foo;
+
+impl Trait for Foo {
+    fn t<'a,'b>(x: &'a str, y: &'b str) { // error: lifetime parameters
+                                          //        or bounds on method `t`
+                                          //        do not match the trait
+                                          //        declaration
+    }
+}
+```
+
+The 'b lifetime constraints for `t` implementation does not match the
+trait declaration. Ensure lifetime declarations match exactly in both trait
+declaration and implementation. Example:
+
+```
+trait Trait {
+    fn t<'a,'b:'a>(x: &'a str, y: &'b str);
+}
+
+struct Foo;
+
+impl Trait for Foo {
+    fn t<'a,'b:'a>(x: &'a str, y: &'b str) { // ok!
+    }
+}
+```
+"##,
+
 E0197: r##"
 Inherent implementations (one that do not implement a trait but provide
 methods associated with a type) are always safe because they are not
@@ -1686,7 +1724,6 @@ impl Baz for Bar { } // Note: This is OK
     E0193, // cannot bound type where clause bounds may only be attached to types
            // involving type parameters
     E0194,
-    E0195, // lifetime parameters or bounds on method do not match the trait declaration
     E0196, // cannot determine a type for this closure
     E0203, // type parameter has more than one relaxed default bound,
            // and only one is supported