Avatar ·

Cómo crear un paquete en Cargo que contenga tanto una biblioteca como un ejecutable

¡Hola a todos! Acabo de empezar a aprender Rust y estoy tratando de organizar mi proyecto. Tengo algo de lógica que quiero reutilizar: por ejemplo, funciones para trabajar con números (factorial, números de Fibonacci). Quiero hacer que estas funciones estén disponibles como biblioteca (para que se puedan importar en otros proyectos mediante `use`), pero al mismo tiempo tener un archivo ejecutable (binario) que se ejecute y demuestre el funcionamiento de estas funciones a través de la consola. Creé un proyecto con `cargo new my_project`, y solo creó `src/main.rs`. He leído que se puede agregar `src/lib.rs`, pero ¿cómo configuro correctamente `Cargo.toml`? ¿Necesito escribir algo como `[lib]` o `[[bin]]`? ¿Y cómo ejecuto luego el binario si quiero usarlo, mientras que la biblioteca la importo en otros crates? Aquí hay un ejemplo de lo que intento hacer: ```rust // src/lib.rs pub fn factorial(n: u64) -> u64 { (1..=n).product() } ``` ```rust // src/main.rs mod lib; // ¿es así? fn main() { ```