From 67cdcc2e12118becb823e20a40cc2687f2b8425a Mon Sep 17 00:00:00 2001 From: Adam Carpenter <53hornet@gmail.com> Date: Wed, 27 Mar 2019 15:32:37 -0400 Subject: Started Rust in Action MEAP. --- .../ch5-sat-messaging/msg-with-refs/src/main.rs | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 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') 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 100644 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