Avatar ·

Comment créer un package dans Cargo qui contient à la fois une bibliothèque et un exécutable ?

Bonjour à tous ! Je viens de commencer à apprendre Rust et j'essaie d'organiser mon projet. J'ai une certaine logique que je veux réutiliser : par exemple, des fonctions pour travailler avec des nombres (factorielle, nombres de Fibonacci). Je veux faire en sorte que ces fonctions soient disponibles en tant que bibliothèque (pour pouvoir les importer dans d'autres projets via `use`), mais en même temps avoir un fichier exécutable (binaire) qui se lance et démontre le fonctionnement de ces fonctions via la console. J'ai créé un projet avec `cargo new my_project`, et il a seulement créé `src/main.rs`. J'ai lu qu'on peut ajouter `src/lib.rs`, mais comment configurer correctement `Cargo.toml` ? Faut-il écrire quelque chose comme `[lib]` ou `[[bin]]` ? Et comment lancer ensuite le binaire si je veux l'utiliser, et la bibliothèque pour l'importer dans d'autres crates ? Voici un exemple de ce que j'essaie de faire : ```rust // src/lib.rs pub fn factorial(n: u64) -> u64 { (1..=n).product() } ``` ```rust // src/main.rs mod lib; // est-ce que ça marche ? fn main() {