pub struct Wpm {
pub raw: f64,
pub corrected: f64,
pub actual: f64,
}Expand description
§Words Per Minute (WPM)
Measures typing speed by calculating how many words (assuming 5 characters per word) are typed per minute. This is the most common metric for typing speed assessment.
§Mathematical Formulas
§Raw WPM
$$WPM_{raw} = \frac{C}{L \cdot T}$$
Where:
- $C$ = total characters typed
- $L$ = AVERAGE_WORD_LENGTH
- $T$ = time in minutes
§Corrected WPM
$$WPM_{corrected} = WPM_{raw} - \frac{E}{T}$$
Where:
- $E$ = total errors made
§Actual WPM
$$WPM_{actual} = WPM_{raw} - \frac{E + R}{T}$$
Where:
- $R$ = total corrections made
§Usage Notes
- Raw WPM shows pure typing speed without quality consideration
- Corrected WPM penalizes errors but rewards fixing them
- Actual WPM penalizes both errors and the time spent correcting them
- Negative values are possible if error rates are extremely high
Fields§
§raw: f64Raw WPM: Pure typing speed without error consideration
Formula: (characters / 5) / minutes
corrected: f64Corrected WPM: Raw WPM minus errors per minute
Formula: raw_wpm - (errors / minutes)
actual: f64Actual WPM: Raw WPM minus both errors and corrections per minute
Formula: raw_wpm - ((errors + corrections) / minutes)
Implementations§
Source§impl Wpm
impl Wpm
Sourcepub fn calculate(
characters: usize,
errors: usize,
corrections: usize,
minutes: f64,
) -> Self
pub fn calculate( characters: usize, errors: usize, corrections: usize, minutes: f64, ) -> Self
Calculate Words Per Minute using the formulas described above
§Parameters
characters- Total number of characters typed during the sessionerrors- Total number of errors made during the sessioncorrections- Total number of corrections made during the sessionminutes- Duration of the typing session in minutes
§Returns
A Wpm struct containing raw, corrected, and actual WPM calculations.
Wpm calculations are clamped to always be >= 0.0
§Example
use gladius::math::Wpm;
let wpm = Wpm::calculate(250, 5, 2, 5.0);
println!("Raw WPM: {}", wpm.raw); // 10.0 WPM
println!("Corrected: {}", wpm.corrected); // 9.0 WPM
println!("Actual: {}", wpm.actual); // 8.6 WPM