From 7e8ee5ed9cad6484e9f13f81731b102ced58402e Mon Sep 17 00:00:00 2001 From: Adam Carpenter Date: Tue, 9 Jul 2019 15:14:04 -0400 Subject: Init. --- .../ch5-sat-messaging/msg-with-refs/src/main.rs | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 meap/meap-code/ch5/ch5-sat-messaging/msg-with-refs/src/main.rs (limited to 'meap/meap-code/ch5/ch5-sat-messaging/msg-with-refs/src/main.rs') diff --git a/meap/meap-code/ch5/ch5-sat-messaging/msg-with-refs/src/main.rs b/meap/meap-code/ch5/ch5-sat-messaging/msg-with-refs/src/main.rs new file mode 100755 index 0000000..394f6cd --- /dev/null +++ b/meap/meap-code/ch5/ch5-sat-messaging/msg-with-refs/src/main.rs @@ -0,0 +1,51 @@ +#[derive(Debug)] +enum StatusCode { + Ok, +} + +#[derive(Debug)] +struct Mailbox { + messages: Vec, +} + +type Message = String; + +#[derive(Debug)] +struct CubeSat { + id: u64, + mailbox: Mailbox, +} + +impl CubeSat { + fn recv(&mut self) -> Option { + self.mailbox.messages.pop() + } +} + +struct GroundStation; + +impl GroundStation { + fn send(&self, to: &mut CubeSat, msg: Message) { + to.mailbox.messages.push(msg); + } +} + +fn main() { + let base = GroundStation {}; + let mut sat_a = CubeSat { id: 0, mailbox: Mailbox { messages: vec![] } }; + let mut sat_b = CubeSat { id: 1, mailbox: Mailbox { messages: vec![] } }; + let mut sat_c = CubeSat { id: 2, mailbox: Mailbox { messages: vec![] } }; + + println!("t0: {:?}", sat_a); + + // sat_a.mailbox.messages.push(Message::from("hi")); + + base.send(&mut sat_a, Message::from("hello there!")); + + println!("t1: {:?}", sat_a); + + let msg = sat_a.recv(); + //println!("{:?}", msg); + + println!("t2: {:?}", sat_a); +} -- cgit v1.2.3