pub trait BooleanOp<F, Rhs = Self>where
F: Float,{
// Required method
fn boolean(&self, rhs: &Rhs, operation: Operation) -> MultiPolygon<F>;
// Provided methods
fn intersection(&self, rhs: &Rhs) -> MultiPolygon<F> { ... }
fn difference(&self, rhs: &Rhs) -> MultiPolygon<F> { ... }
fn union(&self, rhs: &Rhs) -> MultiPolygon<F> { ... }
fn xor(&self, rhs: &Rhs) -> MultiPolygon<F> { ... }
}