Basics

Rust Match

Match Expressions

Rust match expressions handle cases with exhaustive pattern matching.

Introduction to Rust Match Expressions

In Rust, the match expression is a powerful control flow construct that allows developers to compare a value against a series of patterns and execute code based on which pattern matches. The match expression ensures exhaustive pattern matching, meaning all possible cases must be covered. This feature helps catch potential errors at compile time and leads to more robust code.

Basic Syntax of Match Expressions

The basic syntax of a match expression involves a value to match against, followed by a series of patterns and corresponding code blocks. Here is the general structure:

Each pattern is followed by an arrow (=>) and an expression to execute if the pattern matches. The underscore (_) is a catch-all pattern that matches any value not covered by previous patterns.

Using Match with Enums

Enums are a common use case for match expressions, as they can have multiple variants. Here's an example:

In this example, the match expression is used to determine the direction and print a corresponding message. Each variant of the Direction enum is handled explicitly, ensuring exhaustive pattern matching.

Matching with Option and Result Types

The Option and Result types are often used with match expressions in Rust to handle potentially absent or error-prone values. Here's how they work:

In the check_option function, the match expression handles both Some and None cases, while in the process_result function, it distinguishes between Ok and Err cases. This approach ensures all potential outcomes are addressed.

Irrefutable and Refutable Patterns

In Rust, patterns can be classified as irrefutable or refutable. Irrefutable patterns will always match, whereas refutable patterns may not. match expressions require refutable patterns since not all cases may match a given value.

For example, in the let binding, you can only use irrefutable patterns, but in a match expression, refutable patterns are necessary.

Conclusion

Rust's match expression is a versatile tool that facilitates exhaustive pattern matching, making your code more predictable and less error-prone. Whether handling enums, options, results, or other pattern types, the match construct is an essential part of writing idiomatic Rust code.

Previous
If Else
Next
Loops