diff options
| author | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 | 
|---|---|---|
| committer | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 | 
| commit | 67cdcc2e12118becb823e20a40cc2687f2b8425a (patch) | |
| tree | ed92c3234b89079e6d4cf36f5e80c5ffa79def48 /meap/meap-code/ch4/ch4-sat-mailbox.rs | |
| parent | e25482fca375d318a39c3b54db396b0db6e0b263 (diff) | |
| download | learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.tar.xz learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.zip | |
Started Rust in Action MEAP.
Diffstat (limited to 'meap/meap-code/ch4/ch4-sat-mailbox.rs')
| -rw-r--r-- | meap/meap-code/ch4/ch4-sat-mailbox.rs | 42 | 
1 files changed, 42 insertions, 0 deletions
| 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<Message>,
 +}
 +
 +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<Message> {
 +        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);
 +}
 |