Confusión con módulos en Rust cuando existen main.rs y lib.rs
¡Hola! Soy nuevo en Rust y estoy tratando de entender el sistema de módulos. Tengo un proyecto que creé con `cargo new my_project`. Dentro aparecieron dos archivos: `main.rs` y `lib.rs`. Pensé que podría simplemente declarar un módulo en uno de ellos y usarlo en el otro, pero nada funciona.
Aquí está mi estructura:
```
my_project/
├── Cargo.toml
├── src/
│ ├── main.rs
│ └── lib.rs
```
Quiero definir una función en `lib.rs` y llamarla desde `main.rs`. Intenté escribir en `lib.rs`:
```rust
mod utils {
pub fn greet(name: &str) -> String {
format!("Hello, {}!", name)
}
}
```
Y en `main.rs`:
```rust
mod utils;
use utils::greet;
fn main() {
println!("{}", greet("Alice"));
}
```
Pero el compilador da un error: `error[E0432]: unresolved import 'utils::greet'`. También probé diferentes combinaciones de `pub mod`, `use crate::`, pero sigo confundido. ¿Por qué el módulo definido en `lib.rs` no es visible desde `main.rs`? ¿Y cómo organizar correctamente el código?