7 stable releases
1.1.4 | Nov 30, 2022 |
---|---|
1.1.3 | May 12, 2021 |
1.1.2 | Sep 30, 2020 |
1.1.1 | Jan 9, 2020 |
1.0.0 | Sep 13, 2018 |
#21 in Configuration
244,358 downloads per month
Used in 784 crates
(18 directly)
19KB
386 lines
Environmental
.Summary [source, toml]
include::Cargo.toml[lines=2..5]
.Description
include::src/lib.rs[tag=description]
lib.rs
:
Safe global references to stack variables.
Set up a global reference with environmental! macro giving it a name and type.
Use the using
function scoped under its name to name a reference and call a function that
takes no parameters yet can access said reference through the similarly placed with
function.
Examples
#[macro_use] extern crate environmental;
// create a place for the global reference to exist.
environmental!(counter: u32);
fn stuff() {
// do some stuff, accessing the named reference as desired.
counter::with(|i| *i += 1);
}
fn main() {
// declare a stack variable of the same type as our global declaration.
let mut counter_value = 41u32;
// call stuff, setting up our `counter` environment as a reference to our counter_value var.
counter::using(&mut counter_value, stuff);
println!("The answer is {:?}", counter_value); // will print 42!
stuff(); // safe! doesn't do anything.
}