use multichannel::DynMultiReceiver;
#[derive(Debug)]
#[allow(dead_code)]
enum Msg {
Shutdown,
IntegerData(i32),
FloatingData(f32),
}
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord)]
enum Priority {
High,
Low,
}
fn main() {
let mrx = DynMultiReceiver::<Msg, Priority>::new();
let shutdown_sender = mrx.new_channel(Priority::High, 1, false, Some(1));
let int_sender = mrx.new_channel(Priority::Low, 33, false, None);
let float_sender = mrx.new_channel(Priority::Low, 66, false, None);
int_sender.send(Msg::IntegerData(33)).unwrap();
int_sender.send(Msg::IntegerData(4031)).unwrap();
float_sender.send(Msg::FloatingData(3.14)).unwrap();
int_sender.send(Msg::IntegerData(2)).unwrap();
float_sender.send(Msg::FloatingData(10.0)).unwrap();
float_sender.send(Msg::FloatingData(0.0)).unwrap();
for _ in 0..4 {
println!("{:?}", mrx.receive());
}
shutdown_sender.send(Msg::Shutdown).unwrap();
match mrx.receive() {
Msg::Shutdown => println!("Received shutdown message"),
_ => unreachable!("Expected a shutdown message"),
}
}