Bonjour,
En train d’apprendre le langage Rust, il y a un détail que je ne comprend pas concernant l’import de module. Prenons le code suivant (tiré de la documentation du trait rand::Rng
) :
use rand::{thread_rng, Rng};
let mut rng = thread_rng();
let x: u32 = rng.gen();
println!("{}", x);
println!("{:?}", rng.gen::<(f64, bool)>());
Qu’est ce que thread_rng
et Rng
? Des fonctions ? Des namespaces ? Parce que thread_rng
on l’utilise comme une fonction, ça je n’ai aucun souci, je l’importe donc elle est disponible dans mon espace de nom. Mais lorsque j’importe Rng
, j’ai des fonctions qui sont incluses à mon espace de nom comme gen()
ou gen_range()
. Pourtant que je n’ai pas utilisé la syntaxe Rng::*
qui m’aurait semblé plus logique. C’est sûrement dû au fait qu'Rng
soit un trait (et que je ne sais pas encore ce que c’est). Il se passe quoi si j’ai déjà utilisé le label gen()
dans mon projet ? Je ne peux pas utiliser le module rand
?
Merci pour votre aide et bonne journée.