diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2015-07-01 13:28:26 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2015-07-01 19:15:53 +0200 |
| commit | 28d2b39f45298b16240455039358d2a4d304fd61 (patch) | |
| tree | 60df935e81a19b72b51385925188698790cfbbc9 | |
| parent | d2e6ddabc4bdc041d2545896cfe4a642a9569664 (diff) | |
| download | rust-28d2b39f45298b16240455039358d2a4d304fd61.tar.gz rust-28d2b39f45298b16240455039358d2a4d304fd61.zip | |
Add E0277 error explanation
| -rw-r--r-- | src/librustc/diagnostics.rs | 49 | ||||
| -rw-r--r-- | src/librustc_typeck/diagnostics.rs | 2 |
2 files changed, 49 insertions, 2 deletions
diff --git a/src/librustc/diagnostics.rs b/src/librustc/diagnostics.rs index 68ca0eac37a..2eb26e760f9 100644 --- a/src/librustc/diagnostics.rs +++ b/src/librustc/diagnostics.rs @@ -749,6 +749,54 @@ for v in &vs { ``` "##, +E0277: r##" +You tried to use a type which doesn't implement some trait in a place which +expected that trait. Erroneous code example: + +``` +// here we declare the Foo trait with a bar method +trait Foo { + fn bar(&self); +} + +// we now declare a function which takes an object with Foo trait implemented +// as parameter +fn some_func<T: Foo>(foo: T) { + foo.bar(); +} + +fn main() { + // we now call the method with the i32 type, which doesn't implement + // the Foo trait + some_func(5i32); // error: the trait `Foo` is not implemented for the + // type `i32` +} +``` + +In order to fix this error, verify that the type you're using does implement +the trait. Example: + +``` +trait Foo { + fn bar(&self); +} + +fn some_func<T: Foo>(foo: T) { + foo.bar(); // we can now use this method since i32 implements the + // Foo trait +} + +// we implement the trait on the i32 type +impl Foo for i32 { + fn bar(&self) {} +} + +fn main() { + some_func(5i32); // ok! +} +``` +"##, + E0282: r##" This error indicates that type inference did not result in one unique possible type, and extra information is required. In most cases this can be provided @@ -1103,7 +1151,6 @@ register_diagnostics! { E0274, // rustc_on_unimplemented must have a value E0275, // overflow evaluating requirement E0276, // requirement appears on impl method but not on corresponding trait method - E0277, // trait is not implemented for type E0278, // requirement is not satisfied E0279, // requirement is not satisfied E0280, // requirement is not satisfied diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs index e95145c3760..2c948a45f8c 100644 --- a/src/librustc_typeck/diagnostics.rs +++ b/src/librustc_typeck/diagnostics.rs @@ -1358,7 +1358,7 @@ struct Foo { } ``` -Please check you didn't mispelled one field. Example: +Please verify that the field names have been correctly spelled. Example: ``` struct Foo { |
