[−][src]Crate string_cache_codegen
A crate to create static string caches at compiletime.
Examples
With static atoms:
In Cargo.toml
:
[package]
build = "build.rs"
[dependencies]
string_cache = "0.7"
[build-dependencies]
string_cache_codegen = "0.4"
In build.rs
:
extern crate string_cache_codegen; use std::env; use std::path::Path; fn main() { string_cache_codegen::AtomType::new("foo::FooAtom", "foo_atom!") .atoms(&["foo", "bar"]) .write_to_file(&Path::new(&env::var("OUT_DIR").unwrap()).join("foo_atom.rs")) .unwrap() }
In lib.rs
:
ⓘThis example is not tested
extern crate string_cache; mod foo { include!(concat!(env!("OUT_DIR"), "/foo_atom.rs")); }
The generated code will define a FooAtom
type and a foo_atom!
macro.
The macro can be used in expression or patterns, with strings listed in build.rs
.
For example:
ⓘThis example is not tested
fn compute_something(input: &foo::FooAtom) -> u32 { match *input { foo_atom!("foo") => 1, foo_atom!("bar") => 2, _ => 3, } }
Structs
AtomType | A builder for a static atom set and relevant macros |