# Static rustc_lint::builtin::SUSPICIOUS_AUTO_TRAIT_IMPLS

source ·

    pub static SUSPICIOUS_AUTO_TRAIT_IMPLS: &'static Lint

Expand description

The `suspicious_auto_trait_impls` lint checks for potentially incorrect implementations of auto traits.

#### Example

    struct Foo<T>(T);

    unsafe impl<T> Send for Foo<*const T> {}

{{produces}}

#### Explanation

A type can implement auto traits, e.g. `Send`, `Sync` and `Unpin`, in two different ways: either by writing an explicit impl or if all fields of the type implement that auto trait.

The compiler disables the automatic implementation if an explicit one exists for given type constructor. The exact rules governing this were previously unsound, quite subtle, and have been recently modified. This change caused the automatic implementation to be disabled in more cases, potentially breaking some code.