Structs Enums
53 articles
How does pattern matching work
Pattern matching in Rust uses the match operator to compare values against patterns and execute code based on the first successful match.
How to Add Default Values to a Struct in Rust
Add default values to Rust structs using the Default trait or derive macro for automatic initialization.
How to Add Methods to Enums in Rust
Add methods to Rust enums by defining an inherent impl block with functions that match on the enum variants.
How to Bind Variables in Match Arms with @
You're writing a parser. You encounter a token that matches a specific pattern, but you also need the raw value to pass downstream. Or you're handling an error enum: you want to react to a specific variant, but you also need the full struct to extract a message or log the details. Matching the patte
How to Clone and Copy Structs in Rust
Cloning a struct in Rust means calling .clone() for a deep duplicate, while Copy types are duplicated bitwise and implicitly. Learn when to derive each, the difference between them, and the compiler errors that show up when you mix them up.
How to Compare Structs in Rust (PartialEq, Eq)
Rust requires you to opt into equality with PartialEq and Eq. Learn when to derive both, when to drop Eq for floats, and how to write a manual impl that ignores cache fields.
How to Convert Between Enums and Integers in Rust
Convert Rust enums to integers and back using the From and Into traits with match expressions.
How to Convert Between Struct Types in Rust (From/Into)
Implement the From trait on the source struct and use the .into() method to convert between Rust struct types.
How to Define and Use Enums in Rust
Define Rust enums with the `enum` keyword and handle their variants using `match` expressions or inherent methods.
How to Define and Use Structs in Rust
Define a struct using the `struct` keyword followed by a name and a list of named fields, then instantiate it with struct literal syntax or a constructor method.
How to define a struct
You define a struct in Rust using the `struct` keyword followed by the name and a list of fields with their types, ending with a semicolon.
How to destructure a struct
Destructure a Rust struct by matching its fields with curly braces in a pattern to extract values into variables.
How to Implement Hash for Custom Structs in Rust
Implement the Hash trait so your struct can be used as a HashMap or HashSet key. Derive it with #[derive(Hash, PartialEq, Eq)] for the simple case, or hand-write it when you need to skip fields or normalise the data — keeping Hash and Eq in sync.
How to Implement Methods on a Struct in Rust
Define an impl block for your struct and add functions with self as the first parameter to create methods.
How to implement methods on struct
Implement methods on a Rust struct by creating an `impl` block and defining functions with `self` as the first parameter.
How to implement state machine with enums
Implement a state machine in Rust by defining an enum for states and using match expressions to handle transitions.
How to Implement the State Pattern in Rust with Enums
Implement the State Pattern in Rust using an enum for states and a trait to define behavior for each state.
How to Iterate Over Enum Variants in Rust
Iterate over Rust enum variants by manually listing them in a collection or using external crates like strum for automatic generation.
How to Make a Struct Printable with Debug and Display
Derive Debug for quick debugging output and implement Display for custom user-friendly formatting.
How to Make Struct Fields Public vs Private in Rust
Make Rust struct fields public by adding the `pub` keyword before the field name, as fields are private by default.
How to Match on Multiple Patterns with | in Rust
Use the pipe operator | in a match arm to group multiple patterns that share the same execution logic.
How to Use C-Style Enums in Rust
Use the enum keyword with repr attributes and explicit discriminants to create C-style enums in Rust.
How to use enum
Define an enum with the `enum` keyword and handle its variants using a `match` expression to ensure all cases are covered.
How to Use Enums for State Machines in Rust
Define states with an enum and use match expressions to enforce valid transitions in Rust.
How to Use Enum Variants as Function Pointers
You cannot use enum variants as function pointers; instead, store function pointers inside enum variants and match to call them.
How to use enum variants with data
Define enum variants with tuple or struct syntax and extract their data using pattern matching in a match expression.
How to Use Generic Structs in Rust
Generic structs let you define one shape with placeholder types and reuse it for many concrete types. Walk through type parameters, trait bounds, type-specific impls, and monomorphization.
How to use if let
Use `if let` in Rust to concisely execute code only when an `Option` or `Result` matches a specific pattern.
How to Use if let with Enums in Rust
Use `if let` to concisely match a single enum variant and execute code only when that specific case occurs.
How to use match guards
Add an `if` condition after a pattern in a `match` arm to execute code only when both the pattern matches and the condition is true.
How to Use Match Guards in Rust
Match guards are boolean expressions appended to match arms using `if` that allow you to refine pattern matching without nesting additional `if` statements.
How to use nested pattern matching
Use nested patterns in a match expression to destructure enum variants and tuples simultaneously.
How to Use Nested Pattern Matching in Rust
Use nested patterns in a match expression to destructure enum variants and access inner data directly.
How to use Option with pattern matching
Use match, if let, or let...else to safely handle Option values by distinguishing between Some and None cases.
How to Use PhantomData in Struct Definitions
Use PhantomData<T> in struct definitions to inform the compiler about ownership or lifetime relationships without storing actual data.
How to Use Struct Update Syntax in Rust (..other)
Use the .. syntax in Rust struct literals to copy fields from an existing instance while overriding specific values.
How to Use the Builder Pattern in Rust
Implement the Builder Pattern in Rust by creating a separate builder struct with setter methods that return self, culminating in a build method that constructs the final object.
How to Use the match Expression with Enums
Use the `match` keyword to handle every variant of an enum explicitly, ensuring exhaustive and safe control flow.
How to Use the Newtype Pattern in Rust
The newtype pattern wraps a type in a single-field tuple struct to gain compile-time safety, validate at construction, or implement foreign traits on foreign types.
How to Use the Self Type in Rust
Use Self in Rust impl blocks as a shorthand for the current type to simplify method signatures and return types.
How to use while let
Use while let to loop over Option or Result values until they stop matching a specific pattern.
How to Use while let with Enums in Rust
Use while let to loop over enum variants by matching a specific pattern in the condition.
What Are Enums with Data (Tagged Unions) in Rust?
Rust enums with data allow each variant to hold unique fields, enabling a single type to represent multiple distinct states with different associated information.
What are tuple structs
Tuple structs are structs whose fields are accessed by index instead of name, written with parentheses. Great for the newtype pattern and for compact two-field types where positions are obvious.
What Are Tuple Structs in Rust?
Tuple structs are named types containing ordered fields without individual names, defined using parentheses.
What Are Unit Structs in Rust and When Are They Useful?
Unit structs are struct definitions with no fields, declared using `struct Name;`.
What is exhaustive matching
Exhaustive matching is a Rust compiler rule requiring all enum variants to be handled in a match expression to prevent unhandled cases.
What Is Exhaustive Pattern Matching in Rust?
Exhaustive pattern matching is a Rust compiler rule requiring all enum variants to be handled in a match expression to prevent unhandled runtime errors.
What Is the Difference Between a Struct and a Tuple in Rust?
Structs are named types with labeled fields for complex data, while tuples are anonymous, fixed-length collections accessed by index.
What Is the Difference Between Enums in Rust vs C/C++?
Rust enums are data-holding algebraic types with safety guarantees, unlike C/C++ enums which are simple integer aliases.
What Is the Difference Between Methods and Associated Functions in Rust?
Methods operate on instances using `self`, while associated functions operate on the type itself without requiring an instance.
What is the matches macro
The `matches!` macro is a built-in Rust utility that checks if a value matches a specific pattern, returning `true` or `false` without requiring explicit variable binding.
When to Use a Struct vs an Enum in Rust
Use structs to group related data fields and enums to define a value that must be one of several distinct variants.