| @@ -0,0 +1,15 @@ | |||||
| struct Member { // créer une structure | |||||
| id : i32, // member : type | |||||
| name : String, | |||||
| working : bool, | |||||
| } | |||||
| fn main() { | |||||
| let clerk = Member { // initialiser la structure | |||||
| id : 016320, // membre : valeur | |||||
| name : "Smith".to_string(), | |||||
| working : true, | |||||
| } ; | |||||
| println ! ("ID = {}", clerk.id ) ; // accès aux membres | |||||
| println ! ("Nom est {}", clerk.name ) ; | |||||
| println ! ("Working vaut {}", clerk.working ) ; | |||||
| } | |||||
| @@ -0,0 +1,8 @@ | |||||
| struct Square { // crée une structure | |||||
| len : i32, | |||||
| wid : i32, | |||||
| } | |||||
| fn main() { | |||||
| let table = Square { len : 10, wid : 8 } ; // initialisation | |||||
| println ! ("La surface vaut {}", table.len*table.wid ) ; // accès | |||||
| } | |||||
| @@ -0,0 +1,20 @@ | |||||
| enum Langage { // définit un enum | |||||
| JS, // membre | |||||
| Rust, | |||||
| VB | |||||
| } | |||||
| fn programme(var : Langage){ | |||||
| match var{ // utilisation de l'instruction match | |||||
| Langage::JS=> println ! ("Java Script"), | |||||
| Langage::Rust=> println ! ("Rust"), | |||||
| Langage::VB=> println ! ("Visual Basic"), | |||||
| } | |||||
| } | |||||
| fn main(){ | |||||
| print!("Je n'aime pas le ") ; | |||||
| programme( Langage::VB ) ; // accès au membre | |||||
| print!("Je ne programme pas en ") ; | |||||
| programme( Langage::JS ) ; // accès au membre | |||||
| print!("Je programme en ") ; | |||||
| programme( Langage::Rust ) ; // accès au membre | |||||
| } | |||||
| @@ -0,0 +1,7 @@ | |||||
| fn main(){ | |||||
| let x = String::from("E2L") ; // x est propriétaire de "E2L". | |||||
| let y = x ; // Attention ! La propriété de x passe à y | |||||
| println ! ("{}", x) ; // Erreur ! x n'est plus disponible | |||||
| } | |||||
| @@ -0,0 +1,14 @@ | |||||
| fn main() { | |||||
| let s =String::from("Il fait beau") ; // s est propriétaire | |||||
| // de "Il fait beau". | |||||
| let n=cal( s ) ; // Attention ! s perdra sa propriété | |||||
| // après avoir été utilisé | |||||
| println ! ("Contenu de s : {}", s ) ; // s n'est plus disponible | |||||
| println ! ("La longueur de la chaîne est : {}",n) ; | |||||
| } | |||||
| fn cal(s : String) -> usize { | |||||
| s.len() // obtient la longueur de la chaîne de caractères | |||||
| } | |||||
| @@ -0,0 +1,10 @@ | |||||
| fn main() { | |||||
| let s=String :: from("Vive le Rust !"); | |||||
| let n=cal( &s ); // reference | |||||
| println ! ("Contenu de s : {}",s); | |||||
| println ! ("Longueur de la chaîne : {}",n); | |||||
| } | |||||
| fn cal(s :&String ) -> usize { // reference | |||||
| s.len() // retourne la longueur de la chaine | |||||
| } | |||||
| @@ -0,0 +1,8 @@ | |||||
| mod mon_module { // définit un module | |||||
| pub fn test(){ // pub signifie attribut public | |||||
| println ! ("Bonjour mes amis ! ") ; | |||||
| } | |||||
| } | |||||
| fn main(){ | |||||
| mon_module::test() ; // exécute le module | |||||
| } | |||||
| @@ -0,0 +1,14 @@ | |||||
| mod m1{ | |||||
| pub fn a(){ | |||||
| println ! ("module m1") ; | |||||
| } | |||||
| pub mod m2 { // module embarqué | |||||
| pub fn b(){ | |||||
| println ! ("module m2") ; | |||||
| } | |||||
| } | |||||
| } | |||||
| fn main(){ | |||||
| m1::a() ; | |||||
| m1::m2::b() ; // exécute le module et la fonction embarqués | |||||
| } | |||||
| @@ -0,0 +1,3 @@ | |||||
| pub fn ex_fun() { | |||||
| println ! ("{}", "Texte externe") ; | |||||
| } | |||||
| @@ -0,0 +1,5 @@ | |||||
| mod ex6_3 ; // charge un fichier externe | |||||
| use ex6_3::ex_fun ; // charge une fonction externe | |||||
| fn main () { | |||||
| ex_fun() ; // appelle la fonction externe | |||||
| } | |||||
| @@ -0,0 +1,12 @@ | |||||
| mod mon_module { | |||||
| pub fn a() { // la fonction est publique | |||||
| println ! ("fonction a") ; | |||||
| } | |||||
| fn b(){ // la fonction b est privée | |||||
| println ! ("fonction b") ; | |||||
| } | |||||
| } | |||||
| fn main() { | |||||
| mon_module::a() ; | |||||
| mon_module::b() ; // appelle une fonction privée | |||||
| } | |||||
| @@ -0,0 +1,12 @@ | |||||
| mod mon_module { | |||||
| pub fn a() { | |||||
| println ! ("fonction a") ; | |||||
| b() ; // appelle la fonction privée b | |||||
| } | |||||
| fn b() { // la fonction b est privée | |||||
| println ! ("fonction b") ; | |||||
| } | |||||
| } | |||||
| fn main() { | |||||
| mon_module::a() ; | |||||
| } | |||||
| @@ -0,0 +1,15 @@ | |||||
| mod sup_module{ // module parent | |||||
| fn a() -> i32 { | |||||
| 100 | |||||
| } | |||||
| pub mod sub_module { // module enfant | |||||
| use super::a ; // accès à la fonction parentale a | |||||
| pub fn b() { | |||||
| println ! ("{}", a() ) ; // appelle la fonction parentale a | |||||
| } | |||||
| } | |||||
| } | |||||
| fn main() { | |||||
| sup_module::sub_module::b() ; // appelle la fonction b | |||||
| } | |||||