This error code shows the variance of a type's generic parameters.
Erroneous code example:
// NOTE: this feature is perma-unstable and should *only* be used for // testing purposes. #![allow(internal_features)] #![feature(rustc_attrs)] #[rustc_variance] struct Foo<'a, T> { // error: deliberate error to display type's variance t: &'a mut T, }
which produces the following error:
error: [-, o] --> <anon>:4:1 | 4 | struct Foo<'a, T> { | ^^^^^^^^^^^^^^^^^
Note that while #[rustc_variance]
still exists and is used within the compiler, it no longer is marked as E0208
and instead has no error code.
This error is deliberately triggered with the #[rustc_variance]
attribute (#![feature(rustc_attrs)]
must be enabled) and helps to show you the variance of the type's generic parameters. You can read more about variance and subtyping in this section of the Rustonomicon. For a more in depth look at variance (including a more complete list of common variances) see this section of the Reference. For information on how variance is implemented in the compiler, see this section of rustc-dev-guide
.
This error can be easily fixed by removing the #[rustc_variance]
attribute, the compiler's suggestion to comment it out can be applied automatically with rustfix
.