constructors
This commit is contained in:
parent
ce0572485b
commit
78db4168a5
31
src/timer.rs
31
src/timer.rs
@ -5,12 +5,19 @@ pub struct Unpaused;
|
|||||||
|
|
||||||
pub trait PauseState{
|
pub trait PauseState{
|
||||||
const IS_PAUSED:bool;
|
const IS_PAUSED:bool;
|
||||||
|
fn new()->Self;
|
||||||
}
|
}
|
||||||
impl PauseState for Paused{
|
impl PauseState for Paused{
|
||||||
const IS_PAUSED:bool=true;
|
const IS_PAUSED:bool=true;
|
||||||
|
fn new()->Self{
|
||||||
|
Self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
impl PauseState for Unpaused{
|
impl PauseState for Unpaused{
|
||||||
const IS_PAUSED:bool=false;
|
const IS_PAUSED:bool=false;
|
||||||
|
fn new()->Self{
|
||||||
|
Self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Realtime{
|
pub struct Realtime{
|
||||||
@ -106,6 +113,30 @@ impl std::fmt::Display for Error{
|
|||||||
}
|
}
|
||||||
impl std::error::Error for Error{}
|
impl std::error::Error for Error{}
|
||||||
|
|
||||||
|
impl<P:PauseState> TimerFixed<Realtime,P>{
|
||||||
|
pub fn new(time:Time,new_time:Time)->Self{
|
||||||
|
let mut timer=Self{
|
||||||
|
state:Realtime::identity(),
|
||||||
|
_paused:P::new(),
|
||||||
|
};
|
||||||
|
timer.set_time(time,new_time);
|
||||||
|
timer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl<P:PauseState> TimerFixed<Scaled,P>{
|
||||||
|
pub fn new(time:Time,new_time:Time,scale:Ratio64)->Self{
|
||||||
|
let mut timer=Self{
|
||||||
|
state:Scaled::with_scale(scale),
|
||||||
|
_paused:P::new(),
|
||||||
|
};
|
||||||
|
timer.set_time(time,new_time);
|
||||||
|
timer
|
||||||
|
}
|
||||||
|
pub fn unit(time:Time,new_time:Time)->Self{
|
||||||
|
Self::new(time,new_time,Ratio64::ONE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T:TimerState,P:PauseState> TimerFixed<T,P>{
|
impl<T:TimerState,P:PauseState> TimerFixed<T,P>{
|
||||||
pub fn time(&self,time:Time)->Time{
|
pub fn time(&self,time:Time)->Time{
|
||||||
match P::IS_PAUSED{
|
match P::IS_PAUSED{
|
||||||
|
Loading…
Reference in New Issue
Block a user