pub trait Joiner<A, B>: Send + Sync {
// Required method
fn matches(&self, a: &A, b: &B) -> bool;
// Provided method
fn and<J>(self, other: J) -> AndJoiner<Self, J>
where Self: Sized,
J: Joiner<A, B> { ... }
}pub trait Joiner<A, B>: Send + Sync {
// Required method
fn matches(&self, a: &A, b: &B) -> bool;
// Provided method
fn and<J>(self, other: J) -> AndJoiner<Self, J>
where Self: Sized,
J: Joiner<A, B> { ... }
}