Summary

  • An enum creates a new data type

  • An enum data type can have different variants

  • Each enum value is always one of those variants

  • The variants can have 0 or more fields

  • Using the match expression, you can pattern match against values to determine which variant you’re using

  • Match arms have a pattern, a fat arrow =>, and an expression

  • If your arm’s expression is a block, the comma following the block is optional

  • enums can have impl blocks, trait implementations, and can derive traits

  • enums can have type parameters

  • A common pattern in Rust is to use the Option<T> enum to represent an optional result

  • Using match expressions, you can capture the values in fields into a variable