File tree Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -1413,6 +1413,27 @@ a = Animal::Cat { name: "Spotty".to_string(), weight: 2.7 };
14131413In this example, ` Cat ` is a _ struct-like enum variant_ ,
14141414whereas ` Dog ` is simply called an enum variant.
14151415
1416+ Enums have a discriminant. You can assign them explicitly:
1417+
1418+ ```
1419+ enum Foo {
1420+ Bar = 123,
1421+ }
1422+ ```
1423+
1424+ If a discriminant isn't assigned, they start at zero, and add one for each
1425+ variant, in order.
1426+
1427+ You can cast an enum to get this value:
1428+
1429+ ```
1430+ # enum Foo { Bar = 123 }
1431+ let x = Foo::Bar as u32; // x is now 123u32
1432+ ```
1433+
1434+ This only works as long as none of the variants have data attached. If
1435+ it were ` Bar(i32) ` , this is disallowed.
1436+
14161437### Constant items
14171438
14181439``` {.ebnf .gram}
You can’t perform that action at this time.
0 commit comments