pub struct Timer { /* private fields */ }Expand description
A timer object that can be used to put the current thread to sleep or to start a callback after a given amount of time.
Implementations§
Source§impl Timer
impl Timer
Sourcepub fn new2() -> Result<(Self, Canceller)>
pub fn new2() -> Result<(Self, Canceller)>
Examples found in repository?
examples/example1.rs (line 6)
5fn main() {
6 let (mut timer, canceller) = Timer::new2().unwrap();
7
8 println!("Wait 2s, uninterrupted.");
9 let r = timer.sleep(Duration::from_secs(2));
10 println!("Done: {:?}", r);
11
12 println!("Wait 2s, cancelled at once.");
13 canceller.cancel().unwrap();
14 let r = timer.sleep(Duration::from_secs(2));
15 println!("Done {:?}", r);
16
17 println!("Wait 2s, not cancelled.");
18 let r = timer.sleep(Duration::from_secs(2));
19 println!("Done {:?}", r);
20
21 println!("Wait 10s, cancel after 2s");
22 let canceller2 = canceller.clone();
23 std::thread::spawn(move || {
24 std::thread::sleep(Duration::from_secs(2));
25 canceller2.cancel().unwrap();
26 });
27 match timer.sleep(Duration::from_secs(10)) {
28 Err(ref e) if e.kind() == io::ErrorKind::Interrupted => println!("Cancelled"),
29 x => panic!("{:?}", x),
30 };
31}Sourcepub fn sleep(&mut self, duration: Duration) -> Result<()>
pub fn sleep(&mut self, duration: Duration) -> Result<()>
Put the current thread to sleep until the given time has elapsed or the timer is cancelled.
Returns:
- Ok(()) if the given time has elapsed.
- An Error of kind ErrorKind::Interrupted if the timer has been cancelled.
- Some other Error if something goes wrong.
Examples found in repository?
examples/example1.rs (line 9)
5fn main() {
6 let (mut timer, canceller) = Timer::new2().unwrap();
7
8 println!("Wait 2s, uninterrupted.");
9 let r = timer.sleep(Duration::from_secs(2));
10 println!("Done: {:?}", r);
11
12 println!("Wait 2s, cancelled at once.");
13 canceller.cancel().unwrap();
14 let r = timer.sleep(Duration::from_secs(2));
15 println!("Done {:?}", r);
16
17 println!("Wait 2s, not cancelled.");
18 let r = timer.sleep(Duration::from_secs(2));
19 println!("Done {:?}", r);
20
21 println!("Wait 10s, cancel after 2s");
22 let canceller2 = canceller.clone();
23 std::thread::spawn(move || {
24 std::thread::sleep(Duration::from_secs(2));
25 canceller2.cancel().unwrap();
26 });
27 match timer.sleep(Duration::from_secs(10)) {
28 Err(ref e) if e.kind() == io::ErrorKind::Interrupted => println!("Cancelled"),
29 x => panic!("{:?}", x),
30 };
31}Sourcepub fn after<F>(wait: Duration, callback: F) -> Result<Canceller>
pub fn after<F>(wait: Duration, callback: F) -> Result<Canceller>
Run a callback on a new thread after a specified amount of time.
The callback is not run if after returns an error.
Otherwise, the callback is given:
- Ok(()) if the amount of time has elapsed.
- An Error of kind ErrorKind::Interrupted if the timer has been cancelled.
- Some other Error if something goes wrong.
Examples found in repository?
examples/example2.rs (line 13)
5fn main() {
6 let callback = |status: io::Result<()>| match status {
7 Ok(_) => println!("Called"),
8 Err(ref e) if e.kind() == io::ErrorKind::Interrupted => println!("Cancelled"),
9 Err(e) => eprintln!("Error: {:?}", e),
10 };
11
12 println!("Run callback after 2s");
13 Timer::after(Duration::from_secs(2), callback).unwrap();
14
15 println!("Wait 4s");
16 std::thread::sleep(Duration::from_secs(4));
17
18 println!("Run callback after 4s");
19 let canceller = Timer::after(Duration::from_secs(4), callback).unwrap();
20
21 std::thread::sleep(Duration::from_secs(2));
22 println!("Cancel timer.");
23 canceller.cancel().unwrap();
24
25 std::thread::sleep(Duration::from_secs(3));
26}Auto Trait Implementations§
impl !Freeze for Timer
impl !RefUnwindSafe for Timer
impl !UnwindSafe for Timer
impl Send for Timer
impl Sync for Timer
impl Unpin for Timer
impl UnsafeUnpin for Timer
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