Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.