// check-pass #![feature(trait_alias)] pub trait State = Clone + Send + Sync + PartialOrd + PartialEq + std::fmt::Display; pub trait RandState<S: State> = FnMut() -> S + Send; pub trait Evaluator { type State; } pub struct Evolver<E: Evaluator> { rand_state: Box<dyn RandState<E::State>>, } fn main() {}