Skip to main content

Pause

Struct Pause 

Source
pub struct Pause {
    pub id: i32,
    pub start: NaiveDateTime,
    pub end: Option<NaiveDateTime>,
    pub duration: Option<Duration>,
}
Expand description

Represents a single pause period with complete timing information.

This structure models a break period detected by the activity monitor, containing all necessary information for analysis, reporting, and display. It handles both active (ongoing) and completed pause periods gracefully.

§Field Semantics

  • id: Unique database identifier for pause tracking and updates
  • start: Precise timestamp when inactivity threshold was reached
  • end: Completion timestamp (None for ongoing pauses)
  • duration: Calculated break duration (None for ongoing pauses)

§State Handling

The structure supports two primary states:

§Completed Pause

  • All fields populated with meaningful values
  • end contains actual completion timestamp
  • duration contains calculated break duration
  • Ready for reporting and analysis

§Ongoing Pause (Active)

  • start field contains pause initiation time
  • end field is None (pause still in progress)
  • duration field is None (cannot calculate until completion)
  • Can be displayed with special formatting for active state

§Duration Calculation

Durations are calculated and stored at the database level for consistency:

  • Precision: Calculated to the second for accurate reporting
  • Storage: Stored as seconds in database, converted to Duration for display
  • Consistency: All duration calculations use same algorithm
  • Timezone: Uses local time for user-friendly display

§Display Considerations

The structure is designed for easy formatting:

  • Timestamps use standard format suitable for parsing
  • Duration is compatible with chrono::Duration formatting utilities
  • None values are handled gracefully in display formatting
  • Supports both detailed and summary display modes

Fields§

§id: i32

The unique identifier for the pause record in the database.

This ID is auto-generated when the pause record is created and serves as the primary key for all database operations. It’s used for updating pause records when they end and for referencing specific pauses in reports and analysis.

§start: NaiveDateTime

The timestamp when the pause period began.

This represents the precise moment when the activity monitor detected that the user had been inactive for the configured pause threshold duration. The timestamp uses local time zone for user-friendly display and reporting.

§Precision

  • Stored with second-level precision in the database
  • Captured when inactivity threshold is first exceeded
  • Uses system local time for consistency with user expectations
§end: Option<NaiveDateTime>

The timestamp when the pause period ended.

This field is populated when user activity resumes after a break. It remains None for ongoing pauses that haven’t completed yet.

§State Semantics

  • Some(timestamp): Pause has completed, duration can be calculated
  • None: Pause is still active, user hasn’t returned yet

§Update Process

The field is updated when the monitor detects resumed activity:

  1. Activity monitor detects keyboard/mouse input
  2. Database record is updated with current timestamp
  3. Duration is calculated and stored simultaneously
§duration: Option<Duration>

The calculated duration of the pause period.

This represents the total time the user was away from the computer during this break period. The duration is calculated automatically when the pause ends and stored for efficient reporting.

§Calculation Details

  • Formula: end_time - start_time
  • Precision: Second-level accuracy for detailed analysis
  • Storage: Converted from seconds to Duration for easy manipulation
  • Filtering: Only pauses meeting minimum duration are typically displayed

§None Handling

The field is None for ongoing pauses where the end time hasn’t been determined yet. Display formatting handles this gracefully by showing placeholder values or real-time duration calculation.

Trait Implementations§

Source§

impl Clone for Pause

Source§

fn clone(&self) -> Pause

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Pause

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Pause

§

impl RefUnwindSafe for Pause

§

impl Send for Pause

§

impl Sync for Pause

§

impl Unpin for Pause

§

impl UnsafeUnpin for Pause

§

impl UnwindSafe for Pause

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more