pub struct StruggleDetector {
pub config: StruggleConfig,
pub is_struggling: bool,
pub reason: Option<StruggleReason>,
pub wrong_attempts: u32,
pub inactivity_triggered: bool,
}Expand description
Tracks struggle state for an exercise
Fields§
§config: StruggleConfig§is_struggling: bool§reason: Option<StruggleReason>§wrong_attempts: u32§inactivity_triggered: boolImplementations§
Source§impl StruggleDetector
impl StruggleDetector
pub fn new() -> Self
pub fn with_config(config: StruggleConfig) -> Self
Sourcepub fn record_wrong_attempt(&mut self)
pub fn record_wrong_attempt(&mut self)
Record a wrong attempt - may trigger struggle state
Sourcepub fn record_correct_attempt(&mut self)
pub fn record_correct_attempt(&mut self)
Record a correct attempt - resets inactivity but keeps struggle state for hints
Sourcepub fn record_activity(&mut self)
pub fn record_activity(&mut self)
Record user activity (typing, clicking) - resets inactivity timer
Sourcepub fn trigger_inactivity(&mut self)
pub fn trigger_inactivity(&mut self)
Called when inactivity threshold is reached
Sourcepub fn should_show_hints(&self) -> bool
pub fn should_show_hints(&self) -> bool
Check if we should show hints
Sourcepub fn reason(&self) -> Option<StruggleReason>
pub fn reason(&self) -> Option<StruggleReason>
Get the current struggle reason
Sourcepub fn struggle_message(&self) -> Option<&'static str>
pub fn struggle_message(&self) -> Option<&'static str>
Get the current struggle reason for display
Trait Implementations§
Source§impl Clone for StruggleDetector
impl Clone for StruggleDetector
Source§fn clone(&self) -> StruggleDetector
fn clone(&self) -> StruggleDetector
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for StruggleDetector
impl Debug for StruggleDetector
Source§impl Default for StruggleDetector
impl Default for StruggleDetector
Source§fn default() -> StruggleDetector
fn default() -> StruggleDetector
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for StruggleDetector
impl RefUnwindSafe for StruggleDetector
impl Send for StruggleDetector
impl Sync for StruggleDetector
impl Unpin for StruggleDetector
impl UnsafeUnpin for StruggleDetector
impl UnwindSafe for StruggleDetector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> InitializeFromFunction<T> for T
impl<T> InitializeFromFunction<T> for T
§fn initialize_from_function(f: fn() -> T) -> T
fn initialize_from_function(f: fn() -> T) -> T
Create an instance of this type from an initialization function
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
§fn super_from(input: T) -> O
fn super_from(input: T) -> O
Convert from a type to another type.
§impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
§fn super_into(self) -> O
fn super_into(self) -> O
Convert from a type to another type.