2017-02-06 19:42:53 +03:00
|
|
|
lazy-static.rs
|
|
|
|
==============
|
|
|
|
|
|
|
|
A macro for declaring lazily evaluated statics in Rust.
|
|
|
|
|
|
|
|
Using this macro, it is possible to have `static`s that require code to be
|
|
|
|
executed at runtime in order to be initialized.
|
|
|
|
This includes anything requiring heap allocations, like vectors or hash maps,
|
2017-08-24 14:00:41 +03:00
|
|
|
as well as anything that requires non-const function calls to be computed.
|
2017-02-06 19:42:53 +03:00
|
|
|
|
2017-08-24 14:00:41 +03:00
|
|
|
[![Travis-CI Status](https://travis-ci.org/rust-lang-nursery/lazy-static.rs.svg?branch=master)](https://travis-ci.org/rust-lang-nursery/lazy-static.rs)
|
2017-02-06 19:42:53 +03:00
|
|
|
|
|
|
|
# Getting Started
|
|
|
|
|
|
|
|
[lazy-static.rs is available on crates.io](https://crates.io/crates/lazy_static).
|
2017-08-24 14:00:41 +03:00
|
|
|
It is recommended to look there for the newest released version, as well as links to the newest builds of the docs.
|
|
|
|
|
|
|
|
At the point of the last update of this README, the latest published version could be used like this:
|
|
|
|
|
|
|
|
Add the following dependency to your Cargo manifest...
|
2017-02-06 19:42:53 +03:00
|
|
|
|
|
|
|
```toml
|
|
|
|
[dependencies]
|
2017-12-05 20:34:00 +03:00
|
|
|
lazy_static = "1.0"
|
2017-02-06 19:42:53 +03:00
|
|
|
```
|
|
|
|
|
2017-11-01 15:08:58 +03:00
|
|
|
...and see the [docs](https://docs.rs/lazy_static) for how to use it.
|
2017-02-06 19:42:53 +03:00
|
|
|
|
|
|
|
# Example
|
|
|
|
|
|
|
|
```rust
|
|
|
|
#[macro_use]
|
|
|
|
extern crate lazy_static;
|
|
|
|
|
|
|
|
use std::collections::HashMap;
|
|
|
|
|
|
|
|
lazy_static! {
|
|
|
|
static ref HASHMAP: HashMap<u32, &'static str> = {
|
|
|
|
let mut m = HashMap::new();
|
|
|
|
m.insert(0, "foo");
|
|
|
|
m.insert(1, "bar");
|
|
|
|
m.insert(2, "baz");
|
|
|
|
m
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
2017-08-24 14:00:41 +03:00
|
|
|
// First access to `HASHMAP` initializes it
|
2017-02-06 19:42:53 +03:00
|
|
|
println!("The entry for `0` is \"{}\".", HASHMAP.get(&0).unwrap());
|
2017-08-24 14:00:41 +03:00
|
|
|
|
|
|
|
// Any further access to `HASHMAP` just returns the computed value
|
|
|
|
println!("The entry for `1` is \"{}\".", HASHMAP.get(&1).unwrap());
|
2017-02-06 19:42:53 +03:00
|
|
|
}
|
|
|
|
```
|
2017-08-24 14:00:41 +03:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
Licensed under either of
|
|
|
|
|
|
|
|
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|
|
|
|
|
|
|
|
at your option.
|
|
|
|
|
|
|
|
### Contribution
|
|
|
|
|
|
|
|
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.
|