pub trait FlatScan {
type YieldInput;
type ReturnInput;
type YieldOutputIterator: Iterator;
type ReturnOutput;
// Required methods
fn map_yield(
&mut self,
yield_input: Self::YieldInput
) -> Self::YieldOutputIterator;
fn map_return(
&mut self,
return_input: Self::ReturnInput
) -> Self::ReturnOutput;
}