Closed
Description
Code
I tried this code:
pub trait NoDrop{}
impl<T: Drop> NoDrop for T{}
#[derive(Debug)]
pub struct DoesNotHaveDrop(i32);
impl NoDrop for DoesNotHaveDrop{}
fn main() {
let x = Some(DoesNotHaveDrop(0));
println!("{:?}",x.unwrap_or(DoesNotHaveDrop(0)))
}
I expected to see this happen: print DoesNotHaveDrop(0)
(from Debug impl)
Instead, this happened: E0277, trait impl DoesNotHaveDrop: Drop
not found
This was found by CI in the Ruffle Project: https://github.com/ruffle-rs/ruffle/runs/4576592287?check_suite_focus=true
The issue is caused by the effective anti-bound of Drop, introduced by the manual impl of the NoDrop
trait, as well as the PR #91928 which introduced ~const Drop
bounds for a number of functions in Option
.
Version it worked on
It most recently worked on: rustc 1.59.0-nightly (7abab1e 2021-12-18)
Version with regression
rustc --version --verbose
:
rustc 1.59.0-nightly (91a0600a5 2021-12-18)
@rustbot modify labels: +regression-from-stable-to-nightly -regression-untriaged