startup

Crates.iostartup
lib.rsstartup
version0.1.1
sourcesrc
created_at2021-02-02 00:59:49.440162
updated_at2021-02-02 19:51:07.106081
descriptionTiny (no dependency, no proc macro) way to run some code before main.
homepagehttps://github.com/thomcc/startup
repositoryhttps://github.com/thomcc/startup
max_upload_size
id349452
size24,078
crates-io (github:sigp:crates-io)

documentation

https://docs.rs/startup

README

startup: Run Rust code "before main"

Build Status Docs Latest Version Minimum Rust Version

Tiny (no dependency, no proc macro) way to run some code before main. This is similar to the GNU C extension __attribute__((constructor)), or the behavior of static constructors from C++.

Usage

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");
}

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 with ctor in the past...
  • Handle untested unix platforms by assuming they support at least the .ctors section. 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.
Commit count: 15

cargo fmt