Confusão com módulos em Rust quando existem main.rs e lib.rs
Olá! Sou novo em Rust e estou tentando entender o sistema de módulos. Tenho um projeto que criei com `cargo new my_project`. Dentro, encontrei dois arquivos: `main.rs` e `lib.rs`. Pensei que poderia simplesmente declarar um módulo em um deles e usá-lo no outro, mas nada funciona.
Aqui está minha estrutura:
```
my_project/
├── Cargo.toml
├── src/
│ ├── main.rs
│ └── lib.rs
```
Quero definir uma função em `lib.rs` e chamá-la a partir de `main.rs`. Tentei escrever em `lib.rs`:
```rust
mod utils {
pub fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
}
```
E em `main.rs`:
```rust
mod utils;
use utils::greet;
fn main() {
println!("{}", greet("Alice"));
}
```
Mas o compilador dá erro: `error[E0432]: unresolved import 'utils::greet'`. Também tentei diferentes combinações de `pub mod`, `use crate::`, mas ainda estou confuso. Por que o módulo definido em `lib.rs` não é visível a partir de `main.rs`? E como organizar o código corretamente?