Rollup merge of #30768 - steveklabnik:gh28953, r=alexcrichton

Fixes #28953
This commit is contained in:
Simonas Kazlauskas 2016-01-11 21:17:53 +02:00
commit 19820c4488

View File

@ -1822,6 +1822,30 @@ let x: i32 = "I am not a number!";
// | // |
// type `i32` assigned to variable `x` // 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##" E0309: r##"