fn collection_matches<'a, P, T: 'a>(
predicate: &CollectionPredicate<P>,
values: impl IntoIterator<Item = &'a T>,
matches: impl Fn(&P, &T) -> bool + Copy,
) -> boolfn collection_matches<'a, P, T: 'a>(
predicate: &CollectionPredicate<P>,
values: impl IntoIterator<Item = &'a T>,
matches: impl Fn(&P, &T) -> bool + Copy,
) -> bool