pub static SELF_CONSTRUCTOR_FROM_OUTER_ITEM: &Lint
Expand description
The self_constructor_from_outer_item
lint detects cases where the Self
constructor
was silently allowed due to a bug in the resolver, and which may produce surprising
and unintended behavior.
Using a Self
type alias from an outer item was never intended, but was silently allowed.
This is deprecated – and is a hard error when the Self
type alias references generics
that are not in scope.
§Example
ⓘ
#![deny(self_constructor_from_outer_item)]
struct S0(usize);
impl S0 {
fn foo() {
const C: S0 = Self(0);
fn bar() -> S0 {
Self(0)
}
}
}
{{produces}}
§Explanation
The Self
type alias should not be reachable because nested items are not associated with
the scope of the parameters from the parent item.