Por que a ferrugem não consegue encontrar uma função em um submódulo? [duplicado]

Esta pergunta já tem uma resposta aqui:

Como incluir o módulo de outro arquivo do mesmo projeto? 2 respostas

Estou tentando chamar uma função de um módulo localizado em um arquivo separado, a função é pública e estou chamando-a usando um caminho completo, mas rustc ainda reclama de "nome não resolvido".

a.rs
pub mod b;
fn main() {
  b::f()
}
b.rs
pub mod b {
    pub fn f(){
        println!("Hello World!");
    }
}
compilação
$ rustc a.rs
a.rs:3:5: 3:9 error: unresolved name `b::f`.

Quando movo o módulo para o arquivo principal da caixa, tudo funciona bem.

one_file.rs
pub mod b {
    pub fn f(){
        println!("Hello World!");
    }
}
fn main() {
    b::f()
}

Essas duas maneiras não deveriam ser equivalentes? Estou fazendo algo errado, ou é um bug no rustc?

questionAnswers(1)

yourAnswerToTheQuestion