future-fn

Crates.iofuture-fn
lib.rsfuture-fn
version0.3.4
created_at2025-05-05 23:04:58.003868+00
updated_at2025-08-02 06:58:37.181401+00
descriptionA Rust library providing macros to simplify the creation of asynchronous closures with external state captured by move. Useful for structuring asynchronous code with ease and clarity.
homepage
repositoryhttps://github.com/crates-dev/future-fn
max_upload_size
id1661692
size18,533
尤雨东 (eastspire)

documentation

README

future-fn

Official Documentation

A Rust library providing macros to simplify the creation of asynchronous closures with external state captured by move. Useful for structuring asynchronous code with ease and clarity.

Installation

To install future-fn run cmd:

cargo add future-fn

Usage

use future_fn::*;
use std::time::Duration;
use tokio::time::sleep;

let string: String = String::from("test");
let number: i32 = 1;
let future_fn = future_fn!(string, number, {
    let tmp_string: String = String::from("test");
    assert_eq!(string, tmp_string);
    assert_eq!(number, 1);
});
future_fn().await;

let future_fn = future_fn!(string, number, |data| {
    let tmp_string: String = String::from("test");
    sleep(Duration::from_millis(360)).await;
    assert_eq!(string, tmp_string);
    assert_eq!(data, 1);
    assert_eq!(number, 1);
});
future_fn(1).await;

let future_fn = future_fn!(string, number, |data: i32| {
    let tmp_string: String = String::from("test");
    sleep(Duration::from_millis(360)).await;
    assert_eq!(string, tmp_string);
    assert_eq!(data, 1);
    assert_eq!(number, 1);
    sleep(Duration::from_millis(360)).await;
});
future_fn(1).await;

let future_fn = future_fn!(string, number, |data: i32| {
    let tmp_string: String = String::from("test");
    sleep(Duration::from_millis(360)).await;
    assert_eq!(string, tmp_string);
    assert_eq!(data, 1);
    assert_eq!(number, 1);
});
future_fn(1).await;

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Contact

For any inquiries, please reach out to the author at root@ltpp.vip.

Commit count: 0

cargo fmt