| A non-structural-match type was used as the type of a const generic parameter. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0741 |
| #![feature(adt_const_params)] |
| |
| 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`: |
| |
| ``` |
| #![feature(adt_const_params)] |
| |
| use std::marker::ConstParamTy; |
| |
| #[derive(PartialEq, Eq, ConstParamTy)] // We derive both traits here. |
| struct A; |
| |
| struct B<const X: A>; // ok! |
| ``` |