You cannot access the functions of a binary crate (the one whose root file is src/main.rs
) from outside it. As I wrote in your previous thread, the “integration test” feature of Cargo is intended to be used for two use cases:
- Testing a library crate by using its public functions.
- Testing a binary crate by running the program and seeing what it does.
Testing functions in the code of a binary crate is neither of those things — to write that kind of test, you must write the tests in the crate's own source code in src/
, not in tests/
. That's the only way the functions will be reachable.
Also, even if you could, the binary crate's name is not main
, but hello_cargo
(same as the library, confusingly); there is no crate or module named main
. hello_cargo::...
is the correct path to refer to the library (whose root file is src/lib.rs
); main::...
doesn't mean anything. (In general, lib.rs
, main.rs
, and mod.rs
are names that are special and mean something other than the names of modules or crates.)