Skip to content

Instantly share code, notes, and snippets.

@mdrokz
Last active October 1, 2021 08:54
Show Gist options
  • Save mdrokz/3d6670ba95a506d4b25512fe8459ab1b to your computer and use it in GitHub Desktop.
Save mdrokz/3d6670ba95a506d4b25512fe8459ab1b to your computer and use it in GitHub Desktop.
Example - Rust Pattern Matching
let v: Vec<&Token> = tokens.iter().enumerate().filter_map(|(i, token)| {
match token.t {
t if t == TokenType::Function && tokens[i + 1].t == TokenType::Name => Some(token),
t if t == TokenType::Name && tokens[i + 1].t == TokenType::Lp => Some(token),
TokenType::Function
| TokenType::Add
| TokenType::Eos
| TokenType::End
| TokenType::Name
| TokenType::Comma
| TokenType::Rp => Some(token),
_ => None,
}
}).collect();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment