3 stable releases
1.0.2 | Mar 27, 2023 |
---|---|
1.0.1 | Apr 27, 2022 |
#142 in #lazy-evaluation
23 downloads per month
7KB
lazy_fn
lazy_static
for functions!
Makes the attributed function "lazy"; it will only be evaluated once and the result will be cached and thus returned as a static reference.
Usage
In your Cargo.toml
:
[dependencies]
lazy_fn = "1"
lazy_static = "1"
In your code:
#[macro_use] extern crate lazy_fn;
#[lazy_fn]
fn maths() -> i32 {
9 + 10
}
#[lazy_fn]
fn hello_world() -> &'static str {
"hello, world!"
}
#[lazy_fn]
fn hello_fmt() -> String {
format!("hello, {}!", "world")
}
let maths: &'static i32 = maths();
let hello_world: &'static str = hello_world();
let hello_fmt: &'static String = hello_fmt();
lib.rs
:
lazy_static
for functions!
Usage
In your Cargo.toml
:
[dependencies]
lazy_fn = "1"
lazy_static = "1"
#[lazy_fn]
fn maths() -> i32 {
9 + 10
}
#[lazy_fn]
fn hello_world() -> &'static str {
"hello, world!"
}
#[lazy_fn]
fn hello_fmt() -> String {
format!("hello, {}!", "world")
}
let maths: &'static i32 = maths();
let hello_world: &'static str = hello_world();
let hello_fmt: &'static String = hello_fmt();
Dependencies
~1.5MB
~35K SLoC