# Pausable Future
[](https://crates.io/crates/pausable_future)
[](https://github.com/xuxiaocheng0201/pausable_future/commits/master)
[](https://github.com/xuxiaocheng0201/pausable_future/issues)
[](https://github.com/xuxiaocheng0201/pausable_future/pulls)
[](https://github.com/xuxiaocheng0201/pausable_future/blob/master/LICENSE)
**Read this in other languages: [English](README.md), [简体中文](README_zh.md).**
# Description
Pausable and resumable future, useful in background tasks.
# Usage
Add this to your `Cargo.toml`:
```toml
[dependencies]
pausable_future = "~0.1"
```
# Example
```rust
use std::time::Duration;
use pausable_future::Pausable;
use tokio::time::sleep;
#[tokio::main]
async fn main() {
let pausable = Pausable::new(async {
let mut count = 0;
loop {
sleep(Duration::from_millis(300)).await;
count += 1;
println!("count: {}", count);
}
});
let controller = pausable.controller();
tokio::spawn(pausable);
println!("spawn");
sleep(Duration::from_secs(1)).await;
controller.pause();
println!("paused");
sleep(Duration::from_secs(1)).await;
controller.resume();
println!("resumed");
sleep(Duration::from_secs(1)).await;
}
```