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 Send for Timer
impl Sync for Timer
impl Unpin for Timer
impl !UnwindSafe 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