Rollup merge of #30768 - steveklabnik:gh28953, r=alexcrichton
Fixes #28953
This commit is contained in:
commit
19820c4488
@ -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##"
|
||||||
|
Loading…
Reference in New Issue
Block a user