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. --- meap/meap-code/ch4/ch4-sat-mailbox.rs | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 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 100644 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