pub trait MessageIterator: Iterator<Item = Arc<dyn Message>> {
// Provided methods
fn handle<'f, M, H>(
self,
f: impl IntoMessageHandler<M, Handler = H>,
) -> HandleMessage<'f, Self> ⓘ
where Self: Sized,
M: Message + ?Sized,
H: ErasedMessageHandler + 'f { ... }
fn run(self)
where Self: Sized { ... }
}Expand description
An iterator which yields messages.
Provided Methods§
Sourcefn handle<'f, M, H>(
self,
f: impl IntoMessageHandler<M, Handler = H>,
) -> HandleMessage<'f, Self> ⓘ
fn handle<'f, M, H>( self, f: impl IntoMessageHandler<M, Handler = H>, ) -> HandleMessage<'f, Self> ⓘ
Takes a message handler and creates an iterator which calls that message handler on each received message
Examples found in repository?
examples/simple.rs (lines 66-68)
63 fn process_messages(&mut self) {
64 self.sub
65 .message_iter()
66 .handle(|msg: Arc<TestMsg0>| {
67 println!("test_sub0.sub: {:?}", msg);
68 })
69 .run();
70 }
71}
72
73struct TestSubsciber1 {
74 sub: MultiSubscription,
75}
76
77impl TestSubsciber1 {
78 fn new() -> Self {
79 let mut multi_sub = MultiSubscription::unregistered();
80 multi_sub.add::<TestMsg0>().add::<TestMsg1>();
81
82 Self { sub: multi_sub }
83 }
84}
85
86impl Subscriber for TestSubsciber1 {
87 fn subscribe(&mut self, msg_broker: Arc<dyn MessageBroker>) {
88 let _ = self.sub.register(Arc::clone(&msg_broker));
89 }
90
91 fn unsubscribe(&mut self) {
92 let _ = self.sub.unregister();
93 }
94
95 fn activate(&self) {
96 let _ = self.sub.activate();
97 }
98
99 fn deactivate(&self) {
100 let _ = self.sub.deactivate();
101 }
102
103 fn process_messages(&mut self) {
104 self.sub
105 .message_iter()
106 .handle(|msg: Arc<TestMsg0>| {
107 println!("test_sub1.sub0: {:?}", msg);
108 })
109 .handle(|msg: Arc<TestMsg1>| {
110 println!("test_sub1.sub1: {:?}", msg);
111 })
112 .run();
113 }Sourcefn run(self)where
Self: Sized,
fn run(self)where
Self: Sized,
Runs an iterator.
Examples found in repository?
examples/simple.rs (line 69)
63 fn process_messages(&mut self) {
64 self.sub
65 .message_iter()
66 .handle(|msg: Arc<TestMsg0>| {
67 println!("test_sub0.sub: {:?}", msg);
68 })
69 .run();
70 }
71}
72
73struct TestSubsciber1 {
74 sub: MultiSubscription,
75}
76
77impl TestSubsciber1 {
78 fn new() -> Self {
79 let mut multi_sub = MultiSubscription::unregistered();
80 multi_sub.add::<TestMsg0>().add::<TestMsg1>();
81
82 Self { sub: multi_sub }
83 }
84}
85
86impl Subscriber for TestSubsciber1 {
87 fn subscribe(&mut self, msg_broker: Arc<dyn MessageBroker>) {
88 let _ = self.sub.register(Arc::clone(&msg_broker));
89 }
90
91 fn unsubscribe(&mut self) {
92 let _ = self.sub.unregister();
93 }
94
95 fn activate(&self) {
96 let _ = self.sub.activate();
97 }
98
99 fn deactivate(&self) {
100 let _ = self.sub.deactivate();
101 }
102
103 fn process_messages(&mut self) {
104 self.sub
105 .message_iter()
106 .handle(|msg: Arc<TestMsg0>| {
107 println!("test_sub1.sub0: {:?}", msg);
108 })
109 .handle(|msg: Arc<TestMsg1>| {
110 println!("test_sub1.sub1: {:?}", msg);
111 })
112 .run();
113 }