RustPattern Matching


Sintassi

  • _ // carattere jolly, corrisponde a qualsiasi cosa¹
  • ident // modello di associazione, corrisponde a qualsiasi cosa e lo lega a ident ¹
  • ident @ pat // come sopra, ma consentono di abbinare ulteriormente ciò che è vincolato
  • ref ident // modello di associazione, corrisponde a qualsiasi cosa e lo lega a un identificativo di riferimento ¹
  • ref mut ident // modello vincolante partite nulla e si lega ad un ident ¹ di riferimento mutevole
  • & pat // corrisponde ad un riferimento ( pat non è quindi un riferimento ma l'arbitro) ¹
  • & mut pat // come sopra con un riferimento mutabile¹
  • CONST // corrisponde ad una costante nominata
  • Struct { field1 , field2 } // confronta e decostruisce un valore di struttura, vedi sotto la nota sui campi¹
  • EnumVariant // corrisponde a una variante di enumerazione
  • EnumVariant ( pat1 , pat2 ) // corrisponde a una variante di enumerazione e ai parametri corrispondenti
  • EnumVariant ( pat1 , pat2 , .., patn ) // come sopra ma salta tutto tranne il primo, il secondo e l'ultimo parametro
  • ( pat1 , pat2 ) // corrisponde a una tupla e agli elementi corrispondenti¹
  • ( pat1 , pat2 , .., patn ) // come sopra ma salta tutto tranne il primo, il secondo e l'ultimo elemento¹
  • acceso // corrisponde a una costante letterale (char, tipi numerici, booleani e stringa)
  • pat1 ... pat2 // corrisponde ad un valore in quell'intervallo (inclusivo) (tipi char e numerici)

Osservazioni

Quando si decostruisce un valore di struttura, il campo deve essere sia del campo field_name che field_name : pattern . Se non viene specificato alcun modello, viene eseguito un binding implicito:

let Point { x, y } = p;
// equivalent to
let Point { x: x, y: y } = p;

let Point { ref x, ref y } = p;
// equivalent to
let Point { x: ref x, y: ref y } = p;

1: modello inconfutabile

Pattern Matching Esempi correlati