0.1.1 |
|
---|---|
0.1.0 |
|
0.0.1 |
|
#5 in #ctor
10KB
85 行
startup
: 在 "main" 之前运行 Rust 代码
在 main 之前运行一些代码的轻量级方法(无依赖,无 proc macro)。这类似于 GNU C 扩展 __attribute__((constructor))
,或者 C++ 静态构造函数的行为。
用法
startup::on_startup! {
// Note: not all of the rust stdlib may be supported before main.
println!("I'm running before main");
}
fn main() {
println!("I'm inside main");
}
打印
I'm running before main.
I'm inside main.
与 ctor
的比较
此软件包与 ctor
软件包在道德上是等价的,尽管 API 完全不同。存在的主要原因如下
- 编译速度更快——没有 proc macros / syn / quote。
- 更明显地安全。不支持静态上的
#[ctor]
,没有#[dtor]
相当物,并避免了我过去在ctor
上提交的一些问题... - 通过假定它们至少支持
.ctors
部分,来处理未经测试的 Unix 平台。这与 clang 在编译 C++ 静态构造函数时的行为一致。这意味着我们应该期待更好的平台支持。