use std::marker::PhantomData; struct Foo(PhantomData); impl Clone for Foo { fn clone(&self) -> Self { Foo(PhantomData) } } impl Copy for Foo {} fn extract(_: [Foo; N]) -> T { loop {} } fn main() { let x = [Foo(PhantomData); 2]; //~^ ERROR: type annotations needed extract(x).max(2); }