Files
Andrey Kumanyaev 259e6eb1ee Detect Rust entry points so binary crates are not all dead code
entrypoints.Detect had no rust case, so nothing in a Rust repo was ever
stamped as a live root. fn main, every #[test], and every #[no_mangle]
export have no in-crate caller by construction, so a call-graph walk
found them unreachable and the dead-code analyzer reported a binary
crate's entire call tree as dead.

Stamps the symbols a runtime other than application code calls: fn main
in a Cargo binary target (src/main.rs, src/bin/*.rs, examples/, benches/,
tests/ — a fn main in a library module stays an ordinary function),
async-runtime mains behind #[tokio::main] / #[actix_web::main] /
#[async_std::main] / #[rocket::main], test and bench harness attributes,
and FFI exports reached from another language through #[no_mangle],
#[wasm_bindgen], pyo3 and napi.

Declarations inside an extern block are stamped rust:ffi-import for the
opposite reason: their body lives in C, so a missing definition is not a
missing implementation and must not be reported as one.
2026-07-28 01:54:05 +02:00
..