/src/test/run-pass/many.rs

http://github.com/jruderman/rust · Rust · 27 lines · 23 code · 3 blank · 1 comment · 4 complexity · 7f7205ad685ae7eb009f0c83c76bf841 MD5 · raw file

  1. // -*- rust -*-
  2. use std;
  3. import task;
  4. import comm;
  5. fn sub(parent: comm::chan<int>, id: int) {
  6. if id == 0 {
  7. comm::send(parent, 0);
  8. } else {
  9. let p = comm::port();
  10. let ch = comm::chan(p);
  11. let child = task::spawn(|| sub(ch, id - 1) );
  12. let y = comm::recv(p);
  13. comm::send(parent, y + 1);
  14. }
  15. }
  16. fn main() {
  17. let p = comm::port();
  18. let ch = comm::chan(p);
  19. let child = task::spawn(|| sub(ch, 200) );
  20. let y = comm::recv(p);
  21. debug!{"transmission complete"};
  22. log(debug, y);
  23. assert (y == 200);
  24. }