Here (beneath) you don't really need to use `collect` (which allocates memory). You can achieve the same effect by using an iterator. What do you think about the following?

```
let mut words = input.words().take(2).map(from_str::<int>);
match (words.next(), words.next()) {
    (Some(Some(x)), Some(Some(y))) => Some(x + y),
    _                              => None
}
```