Remix.run Logo
Animats 2 hours ago

Yes. There isn't Rust language support for this.

Order of initialization can be supported at various levels:

- Completely random (OK if interdependence are locked out, otherwise bad)

- Consistent, but sorted by something such as alphabetical name (meh.)

- Manual, controlled in linker scripts (headache)

- True dependency tree order, including diagnosing loops (seen in the Modula family).

General comment: yes, you can, and you probably shouldn't unless you have profiling data that indicates a significant performance improvement for a critical use case.

ameliaquining an hour ago | parent [-]

I think these things are used more for developer experience than for performance, since you can always just do the initialization in main if you really have to.

Animats an hour ago | parent [-]

It's something of an issue if you have some crate that needs to set itself up at load time without a call from main. But those are very rare. Even "simplelog" needs a call at startup to do anything.

ameliaquining an hour ago | parent [-]

Yeah, I think of avoiding the call from main as a devex consideration rather than a performance one, since either way the initialization code runs once at process startup.