Или я не понял вопрос или тут что-то странное.
Раст "компилирует вместе" целиком crate (и в Rustbook это говорится). Если бы сущности из одного файла нельзя было бы использовать в другом, то как таким языком вообще пользоваться можно было бы?
Ну и "у меня всё работает". Структура проекта такая:
├── Cargo.lock
├── Cargo.toml
├── src
│ ├── first
│ │ └── mod.rs
│ ├── main.rs
│ └── second.rs
mod.rs:
pub fn foo() {
println!("first::foo()");
}
second.rs:
pub fn bar() {
println!("second::bar()");
}
main.rs:
mod first;
mod second;
use second::*;
fn main() {
first::foo();
bar();
}