I would expect the following code: https://gist.github.com/4688550 to print (Left | Right): Some(0|1|2) in an infinite loop. It only prints Some(0) and Some(2). Removing the right channels causes Some(0), Some(1) and Some(2) to all be printed as expected. Getting rid of the try_recv() on the right port doesn't get rid of the problem.