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!
}
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0741.html