// build-pass pub trait CSpace: Sized { type Traj; } pub trait FullTrajectory {} pub struct Const; pub trait Obstacle where CS: CSpace, { fn trajectory_free(&self, t: &FT) where FT: FullTrajectory; } // ----- const N: usize = 4; struct ObstacleSpace2df32; impl Obstacle for ObstacleSpace2df32 where CS: CSpace, { fn trajectory_free(&self, t: &TF) where TF: FullTrajectory, { } } fn main() {}