diff options
| -rw-r--r-- | src/librustc/diagnostics.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/librustc/diagnostics.rs b/src/librustc/diagnostics.rs index 178d8a87214..3aabe4b4931 100644 --- a/src/librustc/diagnostics.rs +++ b/src/librustc/diagnostics.rs @@ -1822,6 +1822,30 @@ let x: i32 = "I am not a number!"; // | // type `i32` assigned to variable `x` ``` + +Another situation in which this occurs is when you attempt to use the `try!` +macro inside a function that does not return a `Result<T, E>`: + +``` +use std::fs::File; + +fn main() { + let mut f = try!(File::create("foo.txt")); +} +``` + +This code gives an error like this: + +```text +<std macros>:5:8: 6:42 error: mismatched types: + expected `()`, + found `core::result::Result<_, _>` + (expected (), + found enum `core::result::Result`) [E0308] +``` + +`try!` returns a `Result<T, E>`, and so the function must. But `main()` has +`()` as its return type, hence the error. "##, E0309: r##" |
