A product type combines fields, so each possible value contains one value from every component. Structs are the familiar example. The number of possible states equals the product of the fields’ possible values, which can create many combinations to validate. section 7.3
Counting struct states
A struct containing a u8 and a boolean has 256 × 2 = 512 possible states. A value containing 120 and true differs from one containing 119 and true. That flexibility can require conditionals to determine whether a state meets the application’s requirements. section 7.3
Product types belong to algebraic data types and contrast with sum types. Sum types restrict a value to one alternative, making their smaller state space well suited to pattern matching; Rust enums provide this model. section 7.3
Figure 7.2 The myriad of options of a product type versus the simplicity of the sum type
Compare the many combinations available in a product type with the restricted alternatives of a sum type. section 7.3

