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-check-sats-with-copy-trait.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-check-sats-with-copy-trait.rs')
-rw-r--r-- | meap/meap-code/ch4/ch4-check-sats-with-copy-trait.rs | 46 |
1 files changed, 46 insertions, 0 deletions
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);
+}
|