Use container iter by-value rather than boxing
Add intersection method

Could definitely have a more optimised specific implementation.