A small typing test program in Rust
Commit d2ab8fb1c40b
tarball3 files changed+11-18
@@ -178,7 +178,7 @@ impl TypingTest {
178178
179179
fn handle_char(&mut self, c: char) {180180
181
- if self.typing.real_pos() >= self.typing.get_len() {181
+ if self.typing.real_pos() >= self.typing.len() {182182
return;183183
}184184
@@ -11,7 +11,6 @@ pub enum Mode {
1111
pub struct TextCombine {1212
mode: Mode,1313
text: String,14
- len: usize,1514
pos: usize,1615
err_n: usize,1716
err_s: String,@@ -61,12 +60,9 @@ impl TextCombine {
6160
},6261
};6362
64
- let len = text.chars().count();65
-6663
Self {6764
mode,6865
text,69
- len,7066
pos: 0,7167
err_n: 0,7268
err_s: String::new(),@@ -83,13 +79,13 @@ impl TextCombine {
8379
}8480
8581
pub fn pos_increment(&mut self) {86
- if self.pos < self.len {82
+ if self.real_pos() < self.len() - 1 {8783
self.pos += 1;8884
}8985
}9086
9187
pub fn err_n_increment(&mut self) {92
- if self.real_pos() < self.len {88
+ if self.real_pos() < self.len() - 1 {9389
self.err_n += 1;9490
}9591
}@@ -106,8 +102,8 @@ impl TextCombine {
106102
self.err_s.push(c);107103
}108104
109
- pub fn get_len(&self) -> usize {110
- self.len105
+ pub fn len(&self) -> usize {106
+ self.text.chars().count()111107
}112108
113109
pub fn curr_char(&self) -> Option<char> {@@ -126,7 +122,7 @@ impl TextCombine {
126122
}127123
128124
pub fn back(&mut self) {129
- if self.err_s.len() > 0 {125
+ if !self.err_s.is_empty() {130126
self.err_s.pop() ;131127
} else if self.err_n > 0 {132128
self.err_n -= 1;@@ -26,13 +26,10 @@ impl Timer {
2626
}2727
2828
pub fn elapsed (&self) -> Duration {29
- match self.start {30
- Some(time) => if time.elapsed() < self.duration {31
- time.elapsed()32
- } else {33
- self.duration34
- },35
- None => Duration::ZERO,36
- }29
+ self.start30
+ .map(31
+ |time| time.elapsed().min(self.duration)32
+ )33
+ .unwrap_or(Duration::ZERO)3734
}3835
}