Crates.io | async_static |
lib.rs | async_static |
version | 0.1.3 |
source | src |
created_at | 2021-02-19 03:56:59.819518 |
updated_at | 2021-02-20 02:16:07.098475 |
description | A macro for declaring async lazily evaluated statics in Rust. |
homepage | https://github.com/liangyongrui/async_static |
repository | https://github.com/liangyongrui/async_static |
max_upload_size | |
id | 357339 |
size | 21,080 |
dependencies
async_static = "0.1"
once_cell = "1"
# Only used in the current example
tokio = { version = "1", features = ["full"] }
src
use async_static::async_static;
use tokio::time::sleep;
async fn get_num() -> i32 {
println!("hello world");
sleep(Duration::from_millis(100)).await;
123
}
async_static! {
static ref FOO:i32 = get_num().await;
}
/// run print
/// ```
/// hello world
/// The result of the first call: 123
/// The result of the second call: 123
/// ```
#[tokio::test]
async fn test() {
// The first call, print hello world
let n = FOO.await;
println!("The result of the first call: {}", n);
// The second call, nothing print
let n = FOO.await;
println!("The result of the second call: {}", n);
}
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions