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.