error[E0277]: can't drop `NonTrivialDrop` in const contexts --> $DIR/const-drop-fail.rs:43:5 | LL | const _: () = check($exp); | ----- required by a bound introduced by this call ... LL | NonTrivialDrop, | ^^^^^^^^^^^^^^ expected an implementor of trait `~const Destruct` | = note: the trait bound `NonTrivialDrop: ~const Destruct` is not satisfied note: required by a bound in `check` --> $DIR/const-drop-fail.rs:34:19 | LL | const fn check(_: T) {} | ^^^^^^^^^^^^^^^ required by this bound in `check` help: consider borrowing here | LL | &NonTrivialDrop, | + LL | &mut NonTrivialDrop, | ++++ error[E0277]: can't drop `NonTrivialDrop` in const contexts --> $DIR/const-drop-fail.rs:45:5 | LL | const _: () = check($exp); | ----- required by a bound introduced by this call ... LL | ConstImplWithDropGlue(NonTrivialDrop), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ within `ConstImplWithDropGlue`, the trait `~const Destruct` is not implemented for `NonTrivialDrop` | note: the trait `Destruct` is implemented for `NonTrivialDrop`, but that implementation is not `const` --> $DIR/const-drop-fail.rs:45:5 | LL | ConstImplWithDropGlue(NonTrivialDrop), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ note: required because it appears within the type `ConstImplWithDropGlue` --> $DIR/const-drop-fail.rs:16:8 | LL | struct ConstImplWithDropGlue(NonTrivialDrop); | ^^^^^^^^^^^^^^^^^^^^^ note: required by a bound in `check` --> $DIR/const-drop-fail.rs:34:19 | LL | const fn check(_: T) {} | ^^^^^^^^^^^^^^^ required by this bound in `check` error[E0277]: the trait bound `ConstDropImplWithBounds: ~const Destruct` is not satisfied --> $DIR/const-drop-fail.rs:47:5 | LL | const _: () = check($exp); | ----- required by a bound introduced by this call ... LL | ConstDropImplWithBounds::(PhantomData), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected an implementor of trait `~const Destruct` | note: required because of the requirements on the impl of `~const Destruct` for `ConstDropImplWithBounds` --> $DIR/const-drop-fail.rs:28:25 | LL | impl const Drop for ConstDropImplWithBounds { | ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: 1 redundant requirement hidden = note: required because of the requirements on the impl of `~const Destruct` for `ConstDropImplWithBounds` note: required by a bound in `check` --> $DIR/const-drop-fail.rs:34:19 | LL | const fn check(_: T) {} | ^^^^^^^^^^^^^^^ required by this bound in `check` help: consider borrowing here | LL | &ConstDropImplWithBounds::(PhantomData), | + LL | &mut ConstDropImplWithBounds::(PhantomData), | ++++ error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0277`.