Cours de programmation séquentielle

Types avancés

Orestis Malaspinas

N-uplets

Tuples

  • Un n−tuplet est une collection ordonnée de n objets.
  • Permet de regrouper plusieurs valeurs avec différents types dans un type composé.

    
      fn main() {
          let tuple: (f64, char, usize) = (1.0, 'c', 18usize); // type pas nécessaire
    
          println!("Un tuple {:?}", tuple); // affichage Debug
    
          let sans_type_tuple = (666, "abcdef"); // type inféré
    
          println!("Un autre tuple {:?}", sans_type_tuple); // affichage Debug
    }
      

Destructuration

  • On peut destructurer un n-uplet avec la notation

    let (a,b,c,...) = tuple;

  • Les champs sont accessibles avec la notation

    let a = tuple.0; let b = tuple.1;


fn main() {
    let tuple = (1.0, 'c', 18usize);
    let (fl, ch, us) = tuple;
    println!("Le tuple destructuré: {}, {}, {}", fl, ch, us);

    let fl_ind = tuple.0;
    let ch_ind = tuple.1;
    let us_ind = tuple.2;
    println!("Le tuple re-destructuré: {}, {}, {}", fl_ind, ch_ind, us_ind); 
}

Vecteurs statiques

Array

Vecteurs dynamiques

Vec

Structures

Struct

  • Une structure est un type composé.

Types énumérés

Enum

Pattern matching