Error code E0741
A non-structural-match type was used as the type of a const generic parameter.
Erroneous code example:
#![allow(unused)] #![feature(adt_const_params)] fn main() { struct A; struct B<const X: A>; // error! }
Only structural-match types, which are types that derive PartialEq
and Eq
and implement ConstParamTy
, may be used as the types of const generic
parameters.
To fix the previous code example, we derive PartialEq
, Eq
, and
ConstParamTy
:
#![allow(unused)] #![feature(adt_const_params)] fn main() { use std::marker::ConstParamTy; #[derive(PartialEq, Eq, ConstParamTy)] // We derive both traits here. struct A; struct B<const X: A>; // ok! }