1 The functional record update syntax is only allowed for structs. (Struct-like
2 enum variants don't qualify, for example.)
4 Erroneous code example:
7 enum PublicationFrequency {
9 SemiMonthly { days: (u8, u8), annual_special: bool },
12 fn one_up_competitor(competitor_frequency: PublicationFrequency)
13 -> PublicationFrequency {
14 match competitor_frequency {
15 PublicationFrequency::Weekly => PublicationFrequency::SemiMonthly {
16 days: (1, 15), annual_special: false
18 c @ PublicationFrequency::SemiMonthly{ .. } =>
19 PublicationFrequency::SemiMonthly {
20 annual_special: true, ..c // error: functional record update
21 // syntax requires a struct
27 Rewrite the expression without functional record update syntax:
30 enum PublicationFrequency {
32 SemiMonthly { days: (u8, u8), annual_special: bool },
35 fn one_up_competitor(competitor_frequency: PublicationFrequency)
36 -> PublicationFrequency {
37 match competitor_frequency {
38 PublicationFrequency::Weekly => PublicationFrequency::SemiMonthly {
39 days: (1, 15), annual_special: false
41 PublicationFrequency::SemiMonthly{ days, .. } =>
42 PublicationFrequency::SemiMonthly {
43 days, annual_special: true // ok!