warning: the feature `unsafe_binders` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/mismatch.rs:1:12 | LL | #![feature(unsafe_binders)] | ^^^^^^^^^^^^^^ | = note: see issue #130516 for more information = note: `#[warn(incomplete_features)]` on by default error[E0308]: mismatched types --> $DIR/mismatch.rs:7:46 | LL | let _: unsafe<'a> &'a i32 = wrap_binder!(&()); | ^^^ expected `&i32`, found `&()` | = note: expected reference `&i32` found reference `&()` error: `wrap_binder!()` can only wrap into unsafe binder, not `i32` --> $DIR/mismatch.rs:12:18 | LL | let _: i32 = wrap_binder!(&()); | ^^^^^^^^^^^^^^^^^ | = note: unsafe binders are the only valid output of wrap = note: this error originates in the macro `wrap_binder` (in Nightly builds, run with -Z macro-backtrace for more info) error: expected unsafe binder, found integer as input of `unwrap_binder!()` --> $DIR/mismatch.rs:18:20 | LL | unwrap_binder!(y); | ^ | = note: only an unsafe binder type can be unwrapped error[E0282]: type annotations needed --> $DIR/mismatch.rs:23:9 | LL | let unknown = Default::default(); | ^^^^^^^ LL | LL | unwrap_binder!(unknown); | ------- type must be known at this point | help: consider giving `unknown` an explicit type | LL | let unknown: /* Type */ = Default::default(); | ++++++++++++ error[E0282]: type annotations needed --> $DIR/mismatch.rs:29:26 | LL | let x = wrap_binder!(&42); | ^^^ cannot infer type error: aborting due to 5 previous errors; 1 warning emitted Some errors have detailed explanations: E0282, E0308. For more information about an error, try `rustc --explain E0282`.