error: `Option` is forbidden as the type of a const generic parameter --> $DIR/issue-68366.rs:9:25 | LL | struct Collatz>; | ^^^^^^^^^^^^^ | = note: the only supported types are integers, `bool` and `char` help: add `#![feature(adt_const_params)]` to the crate attributes to enable more complex and user defined types | LL + #![feature(adt_const_params)] | error[E0207]: the const parameter `N` is not constrained by the impl trait, self type, or predicates --> $DIR/issue-68366.rs:12:7 | LL | impl Collatz<{Some(N)}> {} | ^^^^^^^^^^^^^^ unconstrained const parameter | = note: expressions using a const parameter must map each value to a distinct output value = note: proving the result of expressions other than the parameter are unique is not supported error[E0207]: the const parameter `N` is not constrained by the impl trait, self type, or predicates --> $DIR/issue-68366.rs:19:6 | LL | impl Foo {} | ^^^^^^^^^^^^^^ unconstrained const parameter | = note: expressions using a const parameter must map each value to a distinct output value = note: proving the result of expressions other than the parameter are unique is not supported error: overly complex generic constant --> $DIR/issue-68366.rs:12:31 | LL | impl Collatz<{Some(N)}> {} | ^-------^ | | | struct/enum construction is not supported in generic constants | = help: consider moving this anonymous constant into a `const` function = note: this operation may be supported in the future error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0207`.