Newer
Older
pub enum MessageDirection {
From,
To,
}
#[derive(Copy, Clone)]
pub struct Message {
pub content: &'static str,
pub direction: MessageDirection,
}
// A single column in the message list
// TODO rename this to MessageIdentity? May be more straightforward
pub struct MessageGroup {
callsign: &'static str,
ssid: u8,
}
impl MessageGroup {
pub fn iter(&self) -> MessageGroupIter {
MessageGroupIter::new(self)
}
}
impl Display for MessageGroup {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
// TODO will need to somehow look up the actual contact name
write!(f, "{}-{}", self.callsign, self.ssid)
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
}
}
impl Default for MessageGroup {
// Stubbing for now
fn default() -> Self {
Self {
callsign: "VA3QAK",
ssid: 3,
}
}
}
pub struct MessageGroupIter<'a> {
group: &'a MessageGroup,
i: usize,
}
impl<'a> MessageGroupIter<'a> {
pub fn new(group: &'a MessageGroup) -> Self {
Self { group, i: 0 }
}
}
impl<'a> Iterator for MessageGroupIter<'a> {
type Item = Message;
fn next(&mut self) -> Option<Self::Item> {
// Stubbing for now
let stubbed = [
Message {
content: "Hello",
direction: MessageDirection::From,
},
Message {
content: "Hi",
direction: MessageDirection::To,
},
Message {
content: "How are you?",
direction: MessageDirection::From,
},
Message {
content: "I'm good",
direction: MessageDirection::To,
},
];