in src/queues/src/lib.rs [281:368]
fn basic() {
let poll = Poll::new().expect("failed to create event loop");
let waker = Arc::new(Waker::from(
MioWaker::new(poll.registry(), WAKER_TOKEN).expect("failed to create waker"),
));
let a_wakers = vec![waker.clone()];
let b_wakers = vec![waker];
let (mut a, mut b) = Queues::<usize, String>::new(&a_wakers, &b_wakers, 1024);
let mut a = a.remove(0);
let mut b = b.remove(0);
// queues are empty
assert!(a.try_recv().is_none());
assert!(b.try_recv().is_none());
// send a usize from A -> B using a targeted send
a.try_send_to(0, 1).expect("failed to send");
assert!(a.try_recv().is_none());
assert_eq!(
b.try_recv().map(|v| (v.sender(), v.into_inner())),
Some((0, 1))
);
// queues are empty
assert!(a.try_recv().is_none());
assert!(b.try_recv().is_none());
// send a usize from A -> B using a non-targeted (any) send
a.try_send_any(2).expect("failed to send");
assert!(a.try_recv().is_none());
assert_eq!(
b.try_recv().map(|v| (v.sender(), v.into_inner())),
Some((0, 2))
);
// queues are empty
assert!(a.try_recv().is_none());
assert!(b.try_recv().is_none());
// send a usize from A -> B using a broadcast send
a.try_send_all(3).expect("failed to send");
assert!(a.try_recv().is_none());
assert_eq!(
b.try_recv().map(|v| (v.sender(), v.into_inner())),
Some((0, 3))
);
// queues are empty
assert!(a.try_recv().is_none());
assert!(b.try_recv().is_none());
// send a String from B -> A using a targeted send
b.try_send_to(0, "apple".to_string())
.expect("failed to send");
assert!(b.try_recv().is_none());
assert_eq!(
a.try_recv().map(|v| (v.sender(), v.into_inner())),
Some((0, "apple".to_string()))
);
// queues are empty
assert!(a.try_recv().is_none());
assert!(b.try_recv().is_none());
// send a usize from A -> B using a non-targeted (any) send
b.try_send_any("banana".to_string())
.expect("failed to send");
assert!(b.try_recv().is_none());
assert_eq!(
a.try_recv().map(|v| (v.sender(), v.into_inner())),
Some((0, "banana".to_string()))
);
// queues are empty
assert!(a.try_recv().is_none());
assert!(b.try_recv().is_none());
// send a usize from A -> B using a broadcast send
b.try_send_all("orange".to_string())
.expect("failed to send");
assert!(b.try_recv().is_none());
assert_eq!(
a.try_recv().map(|v| (v.sender(), v.into_inner())),
Some((0, "orange".to_string()))
);
}