Multi fichier avec rust
En rust votre projet peut contenir plusieurs fichier. (Normal) Pour réaliser cela il faut utiliser ce que l’on appel des modules. Prenons tout de suite un exemple :
src/
├── lib.rs
├── main.rs
└── models.rs
Code main.rs :
mod lib;
fn main() {
println!("Hello world! : {}", lib::f());
}
Code lib.rs
pub fn f() -> String {
return "test".to_string();
}
Ici on utilise lib
dans main
, facile…
Pour vous passer des ::
vous pouvez ajouter cette ligne au début de main :
mod lib;
fn main() {
println!("Hello world! : {}", f());
}
Le problème c’est si vous voulez importer models
dans lib
qui lui même est importé dans main
. Et bin ça marche pas parce que c’est de l'ENORME CHIASSE.
En gros cet abruti va cherche
models
danssrc/lib/models
au lieu desrc/models
. quelle con !
Du coup faut rajouter ceci :
#[path = "models.rs"]
Ce qui donne :
- models :
pub fn a() -> String {
return "end".to_string();
}
- lib :
#[path = "models.rs"] mod models;
pub fn f() -> String {
return models::a();
}
- main :
mod lib;
fn main() {
println!("Hello world! : {}", lib::f());
}
Voilà moi j’appelle ça de la pure merde après chaqu’un ses goûts
Sinon si vous voulez un vrai tuto sur les modules en rust : https://blog.guillaume-gomez.fr/Rust/2/11