Error code E0569
If an impl has a generic parameter with the #[may_dangle] attribute, then
that impl must be declared as an unsafe impl.
Erroneous code example:
#![allow(unused)] #![feature(dropck_eyepatch)] fn main() { struct Foo<X>(X); impl<#[may_dangle] X> Drop for Foo<X> { fn drop(&mut self) { } } }
In this example, we are asserting that the destructor for Foo will not
access any data of type X, and require this assertion to be true for
overall safety in our program. The compiler does not currently attempt to
verify this assertion; therefore we must tag this impl as unsafe.