Avatar ·

¿Cómo crear en Rust un paquete que contenga tanto una biblioteca (lib) como un ejecutable (bin)?

¡Hola a todos! Acabo de empezar a aprender Rust y estoy tratando de entender la organización de proyectos. Tengo una tarea: quiero escribir una pequeña utilidad para trabajar con archivos CSV. Pero al mismo tiempo, quiero que la lógica principal (análisis, filtrado) se pueda reutilizar en otros proyectos como biblioteca. Actualmente mi proyecto se ve así: ``` my_project/ ├── Cargo.toml ├── src/ │ └── main.rs ``` En `main.rs` escribí tanto el análisis como la salida de resultados. Esto es incómodo: si quiero usar el mismo analizador en otro proyecto, tendré que copiar el código. He leído que en Rust se puede hacer un paquete que contenga tanto `lib.rs` (biblioteca) como `main.rs` (binario). Pero no entiendo cómo configurarlo correctamente. En `Cargo.toml` no veo instrucciones explícitas. ¿Cómo sabe Cargo que tengo dos archivos objetivo? ¿Puedo llamar desde `main.rs` a funciones de `lib.rs`? ¿Y cómo organizar correctamente la estructura de carpetas? ¿Necesito especificar algo en `Cargo.toml`? Por favor, indíquenme cómo hacerlo correctamente. Ejemplo.