pub fn concatenate<I>(&self, sources: I) -> Self
    where
        I: IntoIterator<Item=Self>
    {
        self.inner
            .concatenate(sources.into_iter().map(|x| x.inner))
            .as_collection()
    }
Creates a new collection accumulating the contents of the two collections.

Despite the name, differential dataflow collections are unordered. This method is so named because the
implementation is the concatenation of the stream of updates, but it corresponds to the addition of the
two collections.

# Examples

```
use differential_dataflow::input::Input;

::timely::example(|scope| {

let data = scope.new_collection_from(1 .. 10).1;

let odds = data.filter(|x| x % 2 == 1);
let evens = data.filter(|x| x % 2 == 0);

odds.concatenate(Some(evens))
.assert_eq(&data);
});
```
differential-dataflow/src/collection.rs