startup-0.0.1 has been yanked.
startup: Run Rust code "before main"
Tiny (no-dependency, no proc macro) way to run some code before main (or when your dynamic library is loaded in the case of code loaded via dlopen). This is similar to the GNU C extension __attribute__((constructor)), or the behavior of static constructors from C++.
Usage
on_startup!
Prints:
I'm running before main.
I'm inside main.
Comparison with ctor
This crate is the moral equivalent to the ctor crate, although the API is completely different. The main reasons for it's existence are:
- Much faster to compile — no proc macros / syn / quote.
- More obviously safe. No support for
#[ctor]on statics, no#[dtor]equivalent, and avoids a number of issues I filed withctorin the past... - Handle untested unix platforms by assuming they support at least the
.ctorssection. This is in line with what clang seems to do when compiling C++ static constructors. This means we should expect to have better platform support.