unsafe fn pointer(v: usize, w: u32) {} pub trait UniformScalar {} impl UniformScalar for u32 {} pub trait GlUniformScalar: UniformScalar { const FACTORY: unsafe fn(usize, Self) -> (); } impl GlUniformScalar for u32 { const FACTORY: unsafe fn(usize, Self) -> () = pointer; } pub fn foo(value: T) { ::FACTORY(1, value); //~^ ERROR the trait bound `T: GlUniformScalar` is not satisfied } fn main() {}