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