aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMroik <mroik@delayed.space>2026-02-16 06:12:17 +0100
committerMroik <mroik@delayed.space>2026-02-16 08:00:55 +0100
commitfd69ce2666d24707ee7b0ab3986632121c03939f (patch)
treeee7646ac5ad9cb849469cd7610ab8597f763c0fb
parent104872664d6d7f56475a89a11a787aac8b170cec (diff)
Minor adjustments
-rw-r--r--Cargo.lock2
-rw-r--r--Cargo.toml7
-rw-r--r--src/app.rs23
-rw-r--r--src/state.rs1
4 files changed, 19 insertions, 14 deletions
diff --git a/Cargo.lock b/Cargo.lock
index f9e2d9b..bfc972b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -256,7 +256,7 @@ checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]]
name = "marika-finger-blaster"
-version = "0.0.2"
+version = "0.0.4"
dependencies = [
"anyhow",
"clap",
diff --git a/Cargo.toml b/Cargo.toml
index c5e7235..0f5bca8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "marika-finger-blaster"
-version = "0.0.2"
+version = "0.0.4"
edition = "2024"
[dependencies]
@@ -11,3 +11,8 @@ rand = "0.8.5"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
tokio = { version = "1.43.1", features = ["sync", "macros", "rt", "rt-multi-thread", "time"] }
+
+[profile.release]
+strip = true
+lto = true
+codegen-units = 1
diff --git a/src/app.rs b/src/app.rs
index 6a0044b..476b4a7 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -27,7 +27,7 @@ use crate::{
state::State,
};
-pub const TICK_RATE: u64 = 1000 / 20;
+pub const TICK_RATE: u64 = 1000 / 60;
pub const MIN_TERM_COL: u16 = 40;
pub const MIN_TERM_ROW: u16 = 10;
const MAX_QUOTE_LINE: u16 = 80;
@@ -164,27 +164,28 @@ impl App<'_> {
async fn handle_keypress(&mut self, k: char) -> Result<()> {
self.state.buffer.push(k);
- let buffer_length = self.state.buffer.chars().count();
+ self.state.buffer_len += 1;
let current_word = self.quote[self.state.current];
let last_byte = self.state.buffer.char_indices().last().unwrap().0;
let is_word_completed = self.state.buffer[..last_byte] == *current_word;
let is_text_completed =
self.state.buffer == current_word && self.state.current == self.quote.len() - 1;
- let is_correct = buffer_length <= current_word.chars().count()
+ let is_correct = self.state.buffer_len <= current_word.chars().count()
&& self.state.buffer.chars().last().unwrap()
- == current_word.chars().nth(buffer_length - 1).unwrap();
+ == current_word.chars().nth(self.state.buffer_len - 1).unwrap();
if is_word_completed && k == ' ' {
self.state.buffer.clear();
+ self.state.buffer_len = 0;
self.state.current += 1;
} else if is_text_completed {
self.running = false;
self.completed = true;
} else if !is_correct {
self.mistake_count += 1;
- if buffer_length <= current_word.chars().count() {
+ if self.state.buffer_len <= current_word.chars().count() {
self.mistakes
- .insert((self.state.current, buffer_length - 1));
+ .insert((self.state.current, self.state.buffer_len - 1));
}
}
@@ -192,8 +193,9 @@ impl App<'_> {
}
async fn handle_backspace(&mut self) {
- if !self.state.buffer.is_empty() {
+ if self.state.buffer_len > 0 {
self.state.buffer.pop();
+ self.state.buffer_len -= 1;
}
}
@@ -340,12 +342,9 @@ impl App<'_> {
}
async fn start_tick_generator(ev: Sender<Event>) {
- loop {
- tokio::time::sleep(Duration::from_millis(TICK_RATE)).await;
- if ev.is_closed() {
- break;
- }
+ while !ev.is_closed() {
ev.send(Event::Render).await.unwrap();
+ tokio::time::sleep(Duration::from_millis(TICK_RATE)).await;
}
}
diff --git a/src/state.rs b/src/state.rs
index f798836..74b39d5 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -2,4 +2,5 @@
pub struct State {
pub current: usize,
pub buffer: String,
+ pub buffer_len: usize,
}
XMR address: 854DmXNrxULU3ZFJVs4Wc8PFhbq29RhqHhY8W6cdWrtFN3qmooKyyeYPcDzZTNRxphhJ5UzASQfAdEMwSteVqymk28aLhqj