pub trait CollectionExtract<S>: Send + Sync {
type Item;
// Required method
fn extract<'s>(&self, s: &'s S) -> &'s [Self::Item];
// Provided methods
fn contains(&self, _s: &S, _item: &Self::Item) -> bool { ... }
fn change_source(&self) -> ChangeSource { ... }
}