# 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:

ⓘ

    #![feature(dropck_eyepatch)]

    struct Foo<X>(X);
    impl<#[may_dangle] X> Drop for Foo<X> {
        fn drop(&mut self) { }
    }

Run

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.

Back to list of error codes