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.