3 stable releases

1.0.2 Mar 27, 2023
1.0.1 Apr 27, 2022

#142 in #lazy-evaluation

23 downloads per month

MIT/Apache

7KB

crates.io docs.rs license

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