@@ -523,10 +523,8 @@ fn receiver_set_homogeneous() {
523523524524let mut recvd1 = false;
525525let mut recvd2 = false;
526-for _ in 1..3 {
527-if let SubSelectionResult::MessageReceived(received_id, received_data) =
528- rx_set.select().unwrap().into_iter().next().unwrap()
529-{
526+for event in rx_set.select().unwrap() {
527+if let SubSelectionResult::MessageReceived(received_id, received_data) = event {
530528match received_id {
531529 id if id == rx1_id => {
532530assert!(!recvd1, "i32 received twice");
@@ -568,10 +566,8 @@ fn receiver_set_heterogeneous() {
568566569567let mut recvd1 = false;
570568let mut recvd2 = false;
571-for _ in 1..3 {
572-if let SubSelectionResult::MessageReceived(received_id, received_data) =
573- rx_set.select().unwrap().into_iter().next().unwrap()
574-{
569+for event in rx_set.select().unwrap() {
570+if let SubSelectionResult::MessageReceived(received_id, received_data) = event {
575571match received_id {
576572 id if id == rx1_id => {
577573assert!(!recvd1, "i32 received twice");
@@ -634,31 +630,29 @@ fn receiver_set_homogeneous_blocking() {
634630635631let mut recvd1 = false;
636632let mut recvd2 = false;
637-for _ in 1..3 {
638-if let SubSelectionResult::MessageReceived(received_id, received_data) =
639- rx_set.select().unwrap().into_iter().next().unwrap()
640-{
641-match received_id {
642- id if id == rx1_id => {
643-assert!(!recvd1, "1 received twice");
644-let received_value: i32 = received_data.to().unwrap();
645-assert_eq!(received_value, 1);
646- recvd1 = true;
647-},
648- id if id == rx2_id => {
649-assert!(!recvd2, "2 received twice");
650-let received_value: i32 = received_data.to().unwrap();
651-assert_eq!(received_value, 2);
652- recvd2 = true;
653-},
654- _ => panic!("unexpected id"),
633+while !recvd1 || !recvd2 {
634+for event in rx_set.select().unwrap() {
635+if let SubSelectionResult::MessageReceived(received_id, received_data) = event {
636+match received_id {
637+ id if id == rx1_id => {
638+assert!(!recvd1, "1 received twice");
639+let received_value: i32 = received_data.to().unwrap();
640+assert_eq!(received_value, 1);
641+ recvd1 = true;
642+},
643+ id if id == rx2_id => {
644+assert!(!recvd2, "2 received twice");
645+let received_value: i32 = received_data.to().unwrap();
646+assert_eq!(received_value, 2);
647+ recvd2 = true;
648+},
649+ _ => panic!("unexpected id"),
650+}
651+} else {
652+panic!("Unexpected SubSelectionResult");
655653}
656-} else {
657-panic!("Unexpected SubSelectionResult");
658654}
659655}
660-assert!(recvd1, "i32 was not received");
661-assert!(recvd2, "String was not received");
662656});
663657664658let (bootstrap_sub_receiver, tx1): (SubReceiver<SubSender<i32>>, SubSender<i32>) =
@@ -694,31 +688,29 @@ fn receiver_set_heterogeneous_blocking() {
694688695689let mut recvd1 = false;
696690let mut recvd2 = false;
697-for _ in 1..3 {
698-if let SubSelectionResult::MessageReceived(received_id, received_data) =
699- rx_set.select().unwrap().into_iter().next().unwrap()
700-{
701-match received_id {
702- id if id == rx1_id => {
703-assert!(!recvd1, "1 received twice");
704-let received_value: i32 = received_data.to().unwrap();
705-assert_eq!(received_value, 1);
706- recvd1 = true;
707-},
708- id if id == rx2_id => {
709-assert!(!recvd2, "2 received twice");
710-let received_value: i32 = received_data.to().unwrap();
711-assert_eq!(received_value, 2);
712- recvd2 = true;
713-},
714- _ => panic!("unexpected id"),
691+while !recvd1 || !recvd2 {
692+for event in rx_set.select().unwrap() {
693+if let SubSelectionResult::MessageReceived(received_id, received_data) = event {
694+match received_id {
695+ id if id == rx1_id => {
696+assert!(!recvd1, "1 received twice");
697+let received_value: i32 = received_data.to().unwrap();
698+assert_eq!(received_value, 1);
699+ recvd1 = true;
700+},
701+ id if id == rx2_id => {
702+assert!(!recvd2, "2 received twice");
703+let received_value: i32 = received_data.to().unwrap();
704+assert_eq!(received_value, 2);
705+ recvd2 = true;
706+},
707+ _ => panic!("unexpected id"),
708+}
709+} else {
710+panic!("Unexpected SubSelectionResult");
715711}
716-} else {
717-panic!("Unexpected SubSelectionResult");
718712}
719713}
720-assert!(recvd1, "i32 was not received");
721-assert!(recvd2, "String was not received");
722714});
723715724716let (bootstrap_sub_receiver, tx1): (SubReceiver<SubSender<i32>>, SubSender<i32>) =