Crate environmental

source ·
Expand description

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.
}

Macros

Declare a new global reference module whose underlying value does not contain references.