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. --- .../ch4/ch4-check-sats-with-copy-trait.rs | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 meap/meap-code/ch4/ch4-check-sats-with-copy-trait.rs (limited to 'meap/meap-code/ch4/ch4-check-sats-with-copy-trait.rs') diff --git a/meap/meap-code/ch4/ch4-check-sats-with-copy-trait.rs b/meap/meap-code/ch4/ch4-check-sats-with-copy-trait.rs new file mode 100644 index 0000000..4126e05 --- /dev/null +++ b/meap/meap-code/ch4/ch4-check-sats-with-copy-trait.rs @@ -0,0 +1,46 @@ +#[derive(Debug)] +struct CubeSat { + id: u64, +} + +#[derive(Debug)] +enum StatusMessage { + Ok, +} + +impl Copy for CubeSat { } + +impl Copy for StatusMessage { } + +impl Clone for CubeSat { // <1> + fn clone(&self) -> Self { + CubeSat { id: self.id } //<2> + } +} + +impl Clone for StatusMessage { + fn clone(&self) -> Self { + *self // <3> + } +} + +fn check_status(sat_id: CubeSat) -> StatusMessage { + StatusMessage::Ok +} + +fn main () { + let sat_a = CubeSat { id: 0 }; + let sat_b = CubeSat { id: 1 }; + let sat_c = CubeSat { id: 2 }; + + let a_status = check_status(sat_a); + let b_status = check_status(sat_b); + let c_status = check_status(sat_c); + println!("a: {:?}, b: {:?}, c: {:?}", a_status, b_status, c_status); + + // "waiting" ... + let a_status = check_status(sat_a); + let b_status = check_status(sat_b); + let c_status = check_status(sat_c); + println!("a: {:?}, b: {:?}, c: {:?}", a_status, b_status, c_status); +} -- cgit v1.2.3