Expand EO308 to mention try!

Fixes #28953
This commit is contained in:
Steve Klabnik 2016-01-07 14:09:20 -05:00
parent 03f4950239
commit ce49e3225e

View file

@ -1822,6 +1822,30 @@ fn main() {
// |
// 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##"