Inference error with `try!`

The first let _: () line compiles, not the two last (can't infer type for _). I thought the first and two were equivalent?

The trait CausedError is defined here

See for the full discussion.

The try macro is defined slightly different than your first example

It's basically Err(err) => Err(err.into()) instead of e => e.into()