File tree 12 files changed +28
-46
lines changed
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 ;
2
2
3
3
/// Increment the given count. Note that this function takes
4
4
/// `count` by mutable reference.
5
- fn update_count ( count : & mut Count ) {
5
+ fn update_count ( count : & mut Counter ) {
6
6
count. incr ( ) ;
7
7
}
8
8
9
9
fn main ( ) {
10
- let mut count = Count :: default ( ) ;
10
+ let mut count = Counter :: default ( ) ;
11
11
println ! ( "{}" , count. value( ) ) ;
12
12
update_count ( & mut count) ;
13
13
println ! ( "{}" , count. value( ) ) ;
Original file line number Diff line number Diff line change 1
- use rc:: count :: Count ;
1
+ use rc:: simple :: Counter ;
2
2
3
3
/// A "message" struct. More later.
4
4
struct Message < ' a > {
5
5
note : & ' static str ,
6
- counter : & ' a mut Count ,
6
+ counter : & ' a mut Counter ,
7
7
}
8
8
9
9
/// Increment the given count. Note that this function takes
@@ -20,7 +20,7 @@ fn main() {
20
20
todo ! ( ) ;
21
21
// This code will fail to compile because of two mutable
22
22
// references to `count`.
23
- let mut count = Count :: default ( ) ;
23
+ let mut count = Counter :: default ( ) ;
24
24
let mut left = Message { note : "left" , counter : & mut count } ;
25
25
let mut right = Message { note : "right" , counter : & mut count } ;
26
26
left. update_count ( ) ;
Original file line number Diff line number Diff line change 1
- use rc:: message:: Message ;
2
1
use rc:: misc:: make_messages;
3
- use rc:: counter:: Counter ;
4
2
5
3
fn main ( ) {
6
4
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 ;
3
2
4
3
/// Increment the given counter. Note that this function
5
4
/// takes `counter` by immutable reference.
@@ -12,5 +11,4 @@ fn main() {
12
11
println ! ( "{}" , counter. value( ) ) ;
13
12
update_counter ( & counter) ;
14
13
println ! ( "{}" , counter. value( ) ) ;
15
- println ! ( "{}" , counter. incr_value( ) ) ;
16
14
}
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1
1
use std:: cell:: Cell ;
2
2
3
- use crate :: count :: Count ;
3
+ use crate :: simple ;
4
4
5
5
/// An interior-mutable counter over the restricted `Count`.
6
6
#[ derive( Default ) ]
7
- pub struct Ctr ( Cell < Count > ) ;
7
+ pub struct Counter ( Cell < simple :: Counter > ) ;
8
8
9
- impl Ctr {
9
+ impl Counter {
10
10
/// Increase the count of the contained counter by one.
11
11
/// Note that this method takes `self` by immutable
12
12
/// reference, then changes it anyway.
13
13
pub fn incr ( & self ) {
14
- let mut count = self . 0 . replace ( Count :: default ( ) ) ;
14
+ let mut count = self . 0 . replace ( simple :: Counter :: default ( ) ) ;
15
15
count. incr ( ) ;
16
16
let _ = self . 0 . replace ( count) ;
17
17
}
18
18
19
19
/// Return the value of the contained counter.
20
20
pub fn value ( & self ) -> u64 {
21
- let count = self . 0 . replace ( Count :: default ( ) ) ;
21
+ let count = self . 0 . replace ( simple :: Counter :: default ( ) ) ;
22
22
let value = count. value ( ) ;
23
23
let _ = self . 0 . replace ( count) ;
24
24
value
Original file line number Diff line number Diff line change 1
1
//! Counting-related ADTs.
2
2
3
- pub mod count;
4
- pub mod counter;
3
+ pub mod simple;
4
+ pub mod cell;
5
+ pub mod refcell;
5
6
pub mod message;
6
- pub mod ctr;
7
7
pub mod misc;
Original file line number Diff line number Diff line change 11
11
//! assert_eq!(htmp.text(), "hello");
12
12
//! assert_eq!(hello.accesses(), 2);
13
13
14
- use crate :: counter :: Counter ;
14
+ use crate :: refcell :: Counter ;
15
15
16
16
/// Message to print plus usage counter.
17
17
#[ derive( Debug , Clone ) ]
Original file line number Diff line number Diff line change 1
- use crate :: counter :: Counter ;
1
+ use crate :: refcell :: Counter ;
2
2
use crate :: message:: Message ;
3
3
4
4
/// Make a couple of messages with given message strings.
Original file line number Diff line number Diff line change 2
2
//!
3
3
//! # Examples
4
4
//!
5
- //! # use rc::counter ::Counter;
5
+ //! # use rc::refcell ::Counter;
6
6
//! let c0 = Counter::default();
7
7
//! c0.incr();
8
8
//! assert_eq!(c0.value(), 1);
12
12
//! assert_eq!(c0.value(), 3);
13
13
//! assert_eq!(c1.value(), 3);
14
14
15
- use crate :: count :: Count ;
15
+ use crate :: simple ;
16
16
17
17
use std:: cell:: { RefCell , RefMut } ;
18
18
use std:: rc:: Rc ;
19
19
20
- /// An interior-mutable shared counter over the restricted `Count `.
20
+ /// An interior-mutable shared counter over the restricted `simple::Counter `.
21
21
#[ derive( Debug , Default , Clone ) ]
22
- pub struct Counter ( Rc < RefCell < Count > > ) ;
22
+ pub struct Counter ( Rc < RefCell < simple :: Counter > > ) ;
23
23
24
24
impl Counter {
25
25
// Note that this method takes `self` by immutable
@@ -42,7 +42,7 @@ impl Counter {
42
42
self . value ( )
43
43
}
44
44
45
- pub fn count_mut ( & self ) -> RefMut < Count > {
45
+ pub fn count_mut ( & self ) -> RefMut < simple :: Counter > {
46
46
self . 0 . borrow_mut ( )
47
47
}
48
48
}
Original file line number Diff line number Diff line change 2
2
//!
3
3
//! # Examples
4
4
//!
5
- //! # use rc::count::Count ;
6
- //! let mut count = Count ::default();
5
+ //! # use rc::simple::Counter ;
6
+ //! let mut count = Counter ::default();
7
7
//! count.incr();
8
8
//! assert_eq!(count.value(), 1);
9
9
10
- /// A non-negative count .
10
+ /// A non-negative counter .
11
11
#[ derive( Debug , Default ) ]
12
- pub struct Count ( u64 ) ;
12
+ pub struct Counter ( u64 ) ;
13
13
14
- impl Count {
14
+ impl Counter {
15
15
/// Increase the count by one.
16
16
pub fn incr ( & mut self ) {
17
17
self . 0 += 1 ;
Original file line number Diff line number Diff line change 1
- use rc:: counter :: Counter ;
1
+ use rc:: refcell :: Counter ;
2
2
3
3
#[ test]
4
4
#[ should_panic]
You can’t perform that action at this time.
0 commit comments