File tree Expand file tree Collapse file tree 12 files changed +28
-46
lines changed Expand file tree Collapse file tree 12 files changed +28
-46
lines changed Original file line number Diff line number Diff line change 1- use rc:: count :: Count ;
1+ use rc:: simple :: Counter ;
22
33/// Increment the given count. Note that this function takes
44/// `count` by mutable reference.
5- fn update_count ( count : & mut Count ) {
5+ fn update_count ( count : & mut Counter ) {
66 count. incr ( ) ;
77}
88
99fn main ( ) {
10- let mut count = Count :: default ( ) ;
10+ let mut count = Counter :: default ( ) ;
1111 println ! ( "{}" , count. value( ) ) ;
1212 update_count ( & mut count) ;
1313 println ! ( "{}" , count. value( ) ) ;
Original file line number Diff line number Diff line change 1- use rc:: count :: Count ;
1+ use rc:: simple :: Counter ;
22
33/// A "message" struct. More later.
44struct Message < ' a > {
55 note : & ' static str ,
6- counter : & ' a mut Count ,
6+ counter : & ' a mut Counter ,
77}
88
99/// Increment the given count. Note that this function takes
@@ -20,7 +20,7 @@ fn main() {
2020 todo ! ( ) ;
2121 // This code will fail to compile because of two mutable
2222 // references to `count`.
23- let mut count = Count :: default ( ) ;
23+ let mut count = Counter :: default ( ) ;
2424 let mut left = Message { note : "left" , counter : & mut count } ;
2525 let mut right = Message { note : "right" , counter : & mut count } ;
2626 left. update_count ( ) ;
Original file line number Diff line number Diff line change 1- use rc:: message:: Message ;
21use rc:: misc:: make_messages;
3- use rc:: counter:: Counter ;
42
53fn main ( ) {
64 let ( m1, m2) = make_messages ( "m1" , "m2" ) ;
Original file line number Diff line number Diff line change 1- // https://doc.rust-lang.org/std/cell/
2- use rc:: counter:: Counter ;
1+ use rc:: cell:: Counter ;
32
43/// Increment the given counter. Note that this function
54/// takes `counter` by immutable reference.
@@ -12,5 +11,4 @@ fn main() {
1211 println ! ( "{}" , counter. value( ) ) ;
1312 update_counter ( & counter) ;
1413 println ! ( "{}" , counter. value( ) ) ;
15- println ! ( "{}" , counter. incr_value( ) ) ;
1614}
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 11use std:: cell:: Cell ;
22
3- use crate :: count :: Count ;
3+ use crate :: simple ;
44
55/// An interior-mutable counter over the restricted `Count`.
66#[ derive( Default ) ]
7- pub struct Ctr ( Cell < Count > ) ;
7+ pub struct Counter ( Cell < simple :: Counter > ) ;
88
9- impl Ctr {
9+ impl Counter {
1010 /// Increase the count of the contained counter by one.
1111 /// Note that this method takes `self` by immutable
1212 /// reference, then changes it anyway.
1313 pub fn incr ( & self ) {
14- let mut count = self . 0 . replace ( Count :: default ( ) ) ;
14+ let mut count = self . 0 . replace ( simple :: Counter :: default ( ) ) ;
1515 count. incr ( ) ;
1616 let _ = self . 0 . replace ( count) ;
1717 }
1818
1919 /// Return the value of the contained counter.
2020 pub fn value ( & self ) -> u64 {
21- let count = self . 0 . replace ( Count :: default ( ) ) ;
21+ let count = self . 0 . replace ( simple :: Counter :: default ( ) ) ;
2222 let value = count. value ( ) ;
2323 let _ = self . 0 . replace ( count) ;
2424 value
Original file line number Diff line number Diff line change 11//! Counting-related ADTs.
22
3- pub mod count;
4- pub mod counter;
3+ pub mod simple;
4+ pub mod cell;
5+ pub mod refcell;
56pub mod message;
6- pub mod ctr;
77pub mod misc;
Original file line number Diff line number Diff line change 1111//! assert_eq!(htmp.text(), "hello");
1212//! assert_eq!(hello.accesses(), 2);
1313
14- use crate :: counter :: Counter ;
14+ use crate :: refcell :: Counter ;
1515
1616/// Message to print plus usage counter.
1717#[ derive( Debug , Clone ) ]
Original file line number Diff line number Diff line change 1- use crate :: counter :: Counter ;
1+ use crate :: refcell :: Counter ;
22use crate :: message:: Message ;
33
44/// Make a couple of messages with given message strings.
Original file line number Diff line number Diff line change 22//!
33//! # Examples
44//!
5- //! # use rc::counter ::Counter;
5+ //! # use rc::refcell ::Counter;
66//! let c0 = Counter::default();
77//! c0.incr();
88//! assert_eq!(c0.value(), 1);
1212//! assert_eq!(c0.value(), 3);
1313//! assert_eq!(c1.value(), 3);
1414
15- use crate :: count :: Count ;
15+ use crate :: simple ;
1616
1717use std:: cell:: { RefCell , RefMut } ;
1818use std:: rc:: Rc ;
1919
20- /// An interior-mutable shared counter over the restricted `Count `.
20+ /// An interior-mutable shared counter over the restricted `simple::Counter `.
2121#[ derive( Debug , Default , Clone ) ]
22- pub struct Counter ( Rc < RefCell < Count > > ) ;
22+ pub struct Counter ( Rc < RefCell < simple :: Counter > > ) ;
2323
2424impl Counter {
2525 // Note that this method takes `self` by immutable
@@ -42,7 +42,7 @@ impl Counter {
4242 self . value ( )
4343 }
4444
45- pub fn count_mut ( & self ) -> RefMut < Count > {
45+ pub fn count_mut ( & self ) -> RefMut < simple :: Counter > {
4646 self . 0 . borrow_mut ( )
4747 }
4848}
You can’t perform that action at this time.
0 commit comments