#background-task #async #future #pause #async-task #pausable

pausable_future

Pausable and resumable future, useful in background tasks

2 unstable releases

0.2.0 Jul 18, 2024
0.1.0 Apr 18, 2024

#893 in Asynchronous

Download history 31/week @ 2024-11-13 44/week @ 2024-11-20 44/week @ 2024-11-27 55/week @ 2024-12-04 70/week @ 2024-12-11 34/week @ 2024-12-18 5/week @ 2024-12-25 28/week @ 2025-01-01 43/week @ 2025-01-08 23/week @ 2025-01-15 26/week @ 2025-01-22 7/week @ 2025-01-29 24/week @ 2025-02-05 42/week @ 2025-02-12 30/week @ 2025-02-19 28/week @ 2025-02-26

125 downloads per month

MIT license

7KB
83 lines

Pausable Future

Crate GitHub last commit GitHub issues GitHub pull requests GitHub

Read this in other languages: English, 简体中文.

Description

Pausable and resumable future/stream, useful in background tasks.

Usage

Add this to your Cargo.toml:

[dependencies]
pausable_future = "~0.2"

Example

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;
}

Dependencies

~170KB