My solution

  1. pub fn main() -> ! {
  2. let mut timer = Timer::new().unwrap();
  3. let Serial { mut tx, mut rx } = Serial::new().unwrap();
  4. let mut periodic = timer.periodic(100);
  5. let mut bytes = rx.bytes();
  6. let mut leds = LEDS.iter()
  7. .zip(LEDS.iter().skip(1))
  8. .chain(iter::once((&LEDS[7], &LEDS[0])))
  9. .cycle();
  10. loop {
  11. if let Async::Ready(()) = periodic.poll() {
  12. if let Some((current, next)) = leds.next() {
  13. current.off();
  14. next.on();
  15. }
  16. }
  17. if let Async::Ready(byte) = bytes.poll() {
  18. tx.write(byte).wait();
  19. }
  20. }
  21. }