9 个版本
0.5.2 | 2022 年 3 月 27 日 |
---|---|
0.5.1 | 2019 年 10 月 21 日 |
0.4.4 | 2019 年 9 月 14 日 |
0.4.2 | 2018 年 10 月 22 日 |
0.3.0 | 2016 年 10 月 28 日 |
#143 in 过程宏
698,258 每月下载量
用于 1,441 个 crate(8 个直接使用)
12KB
152 行
一个用于在编译时创建静态字符串缓存的 crate。
示例
使用静态原子
在 Cargo.toml
[package]
build = "build.rs"
[dependencies]
string_cache = "0.8"
[build-dependencies]
string_cache_codegen = "0.5"
在 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()
}
在 lib.rs
extern crate string_cache;
mod foo {
include!(concat!(env!("OUT_DIR"), "/foo_atom.rs"));
}
生成的代码将定义一个 FooAtom
类型和一个 foo_atom!
宏。该宏可以在表达式或模式中使用,字符串列表在 build.rs
中列出。例如
fn compute_something(input: &foo::FooAtom) -> u32 {
match *input {
foo_atom!("foo") => 1,
foo_atom!("bar") => 2,
_ => 3,
}
}
依赖项
~340–470KB