// check-pass fn foo(t: T) -> usize where for<'a> &'a T: IntoIterator, for<'a> <&'a T as IntoIterator>::IntoIter: ExactSizeIterator, { t.into_iter().len() } fn main() { foo::>(vec![]); } mod another { use std::ops::Deref; fn test() where T: Deref, TDeref: ?Sized, for<'a> &'a TDeref: IntoIterator, for<'a> <&'a TDeref as IntoIterator>::IntoIter: Clone, { } fn main() { test::, _>(); } }