14/08/2020

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 dans src/lib/modelsau lieu de src/models. quelle con !

Du coup faut rajouter ceci :

#[path = "models.rs"]

Ce qui donne :

pub fn a() -> String {
	return "end".to_string();
}
#[path = "models.rs"] mod models;

pub fn f() -> String {
	return models::a();
}
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