Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
example
lazy-static Use 2018-style absolute paths in examples Apr 29, 2019
Cargo.toml Place each standalone example in a workspace Mar 2, 2019
README.md Typo in lazy-static readme Jan 4, 2018

README.md

An example of parsing a custom syntax within a functionlike!(...) procedural macro. Demonstrates how to trigger custom warnings and error messages on individual tokens of the input.

The library implements a lazy_static! macro similar to the one from the real lazy_static crate on crates.io.

lazy_static! {
    static ref USERNAME: Regex = Regex::new("^[a-z0-9_-]{3,16}$").unwrap();
}

Compile and run the example by doing cargo run in the directory of the example crate.

The implementation shows how to trigger custom warnings and error messages on the macro input. For example if you try adding an uncreatively named FOO lazy static, the macro will scold you with the following warning.

warning: come on, pick a more creative name
  --> src/main.rs:10:16
   |
10 |     static ref FOO: String = "lazy_static".to_owned();
   |                ^^^

And if you try to lazily initialize () = (), the macro will outright refuse to compile it for you.

error: I can't think of a legitimate use for lazily initializing the value `()`
  --> src/main.rs:10:27
   |
10 |     static ref UNIT: () = ();
   |                           ^^
You can’t perform that action at this time.