Struct TimerStruct

Source
pub struct TimerStruct {
    pub duration: u32,
    pub hours: u32,
    pub minutes: u32,
    pub seconds: u32,
}
Expand description

Represents a countdown timer.

Fields§

§duration: u32

The total duration of the timer in seconds.

§hours: u32

The initial hours component of the timer.

§minutes: u32

The initial minutes component of the timer.

§seconds: u32

The initial seconds component of the timer.

Implementations§

Source§

impl TimerStruct

Source

pub fn new( hours: u32, minutes: u32, seconds: u32, ) -> Result<TimerStruct, &'static str>

Creates a new TimerStruct instance.

§Arguments
  • hours - The hours component of the timer duration.
  • minutes - The minutes component of the timer duration.
  • seconds - The seconds component of the timer duration.
§Returns
  • Ok(TimerStruct) if the total duration calculated from hours, minutes, and seconds is greater than 0.
  • Err("Duration need to be 1 or more seconds.") if the total duration is 0.
§Examples
use your_crate_name::TimerStruct; // Replace your_crate_name with your actual crate name

let timer = TimerStruct::new(0, 1, 30).expect("Failed to create timer"); // 1 minute 30 seconds
let invalid_timer = TimerStruct::new(0, 0, 0); // This will return an Err
Source

pub fn start_timer<W: Write>(&self, writer: &mut W)

Starts the countdown timer.

The timer will print the remaining time to the provided writer every second, overwriting the previous line. When the timer reaches 0, it prints the final 0:0:0 with a newline and stops.

§Arguments
  • writer - A mutable reference to any type that implements the std::io::Write trait (e.g., &mut std::io::Stdout).
§Examples
use clock-timer::TimerStruct; // Replace your_crate_name with your actual crate name
use std::io::{self, stdout};

let timer = TimerStruct::new(0, 0, 5).unwrap(); // 5-second timer
let mut writer = stdout();
timer.start_timer(&mut writer);
println!("Timer finished!");

Trait Implementations§

Source§

impl Clone for TimerStruct

Source§

fn clone(&self) -> TimerStruct

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TimerStruct

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Copy for TimerStruct

Auto Trait Implementations§

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<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, 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> 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.