summaryrefslogtreecommitdiff
path: root/meap/meap-code/ch4/ch4-rc-refcell-groundstation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'meap/meap-code/ch4/ch4-rc-refcell-groundstation.rs')
-rw-r--r--meap/meap-code/ch4/ch4-rc-refcell-groundstation.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/meap/meap-code/ch4/ch4-rc-refcell-groundstation.rs b/meap/meap-code/ch4/ch4-rc-refcell-groundstation.rs
new file mode 100644
index 0000000..d0e27ee
--- /dev/null
+++ b/meap/meap-code/ch4/ch4-rc-refcell-groundstation.rs
@@ -0,0 +1,31 @@
+use std::rc::Rc;
+use std::cell::RefCell;
+
+#[derive(Debug)]
+struct GroundStation {
+ radio_freq: f64 // Mhz
+}
+
+fn main() {
+ let base: Rc<RefCell<GroundStation>> = Rc::new(RefCell::new(
+ GroundStation {
+ radio_freq: 87.65
+ }
+ ));
+
+ println!("base: {:?}", base);
+
+ { // introduce a new scope
+ let mut base_2 = base.borrow_mut();
+ base_2.radio_freq -= 12.34;
+ println!("base_2: {:?}", base_2);
+ }
+
+ println!("base: {:?}", base);
+
+ let mut base_3 = base.borrow_mut();
+ base_3.radio_freq += 43.21;
+
+ println!("base: {:?}", base);
+ println!("base_3: {:?}", base_3);
+}