Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Match

Compara um valor contra diferentes padrões (patterns) e executa o código correspondente ao primeiro padrão que corresponde. É como um switch mais poderoso e mais seguro.

Ele garante que todos os casos possíveis são cobertos, prevenindo erros comuns. Diferente do switch tradicional, ele não precisa de break e sempre retorna um valor.

#![allow(unused)]
fn main() {
let a = 3;

match a {
  1 => println!("1"),
  2 => println!("2"),
  3 => println!("3"),
  _ => println!("Nenhuma!"),
};
}

range

#![allow(unused)]
fn main() {
let idade = 63;

let categoria = match idade {
  0..=11 => "Criança",
  12..=17 => "Adolescente",
  18..=64 => "Adulto",
  _ => "Idoso",
};

println!("{}", categoria);
}

println!()

#![allow(unused)]
fn main() {
let letra = 'g';

println!("{:?}", match letra {
  'A'..='Z' => "A ... Z",
  'a'..='z' => "a ... z",
  _ => "Outro",
});
}

operation

#![allow(unused)]
fn main() {
let numero = 20;

let result = match numero {
  1 | 3 | 5 | 7 | 9 => "Ímpar",
  2 | 4 | 6 | 8 | 10 => "Par",
  _=> "Nenhum!",
};

println!("{}", result);
}

equal

#![allow(unused)]
fn main() {
let even = (2, -2);

let result = match even {
  (x, y) if x == y => "x é igual a y",
  (x, _) if x % 2 == 0 => "o valor x é par",
  _=> "Nenhuma!",
};

println!("{:?}", result);
}