1use crate::role::Role;
6use crossbeam_channel::{bounded, Receiver, Sender};
7
8#[derive(Debug)]
22pub struct RoleEnd {
23 #[doc(hidden)]
24 pub sender: Sender<()>,
25 #[doc(hidden)]
26 pub receiver: Receiver<()>,
27}
28
29impl Role for RoleEnd {
30 type Dual = Self;
31
32 fn new() -> (Self, Self::Dual) {
33 let (sender1, receiver1) = bounded::<()>(1);
34 let (sender2, receiver2) = bounded::<()>(1);
35
36 (
37 RoleEnd {
38 sender: sender1,
39 receiver: receiver2,
40 },
41 RoleEnd {
42 sender: sender2,
43 receiver: receiver1,
44 },
45 )
46 }
47
48 fn head_str() -> String {
49 "RoleEnd".to_string()
50 }
51
52 fn tail_str() -> String {
53 "".to_string()
54 }
55
56 fn self_head_str(&self) -> String {
57 "RoleEnd".to_string()
58 }
59
60 fn self_tail_str(&self) -> String {
61 "".to_string()
62 }
63}