0

举个例子:

static COUNT: AtomicUsize = AtomicUsize::new(0);

#[proc_macro_attribute]
pub fn count_usages(_attr: TokenStream, item: TokenStream) -> TokenStream {
    let c = COUNT.fetch_add(1, Ordering::AcqRel);
    println!("Do stuff with c: {}", c);
    item
}

尽管处理的订单属性可能不同,但每次的最终计数是否相同,例如:

  • 增量建筑
  • Registry crates 和本地 crates 共享相同的 proc_macro 库和版本
  • 编译器内部并行

一个实际用例(尤其是我的)是生成编译时伪静态变量内存布局,该布局将在静态链接的可执行文件中的多个内存管理器中重用。

4

1 回答 1

1
于 2021-07-10T17:14:03.807 回答