E0436 - Error codes index
Description: Book listing all Rust error codes

# Error code E0436

The functional record update syntax was used on something other than a struct.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    enum PublicationFrequency {
        Weekly,
        SemiMonthly { days: (u8, u8), annual_special: bool },
    }

    fn one_up_competitor(competitor_frequency: PublicationFrequency)
                         -> PublicationFrequency {
        match competitor_frequency {
            PublicationFrequency::Weekly => PublicationFrequency::SemiMonthly {
                days: (1, 15), annual_special: false
            },
            c @ PublicationFrequency::SemiMonthly{ .. } =>
                PublicationFrequency::SemiMonthly {
                    annual_special: true, ..c // error: functional record update
                                              //        syntax requires a struct
            }
        }
    }
    }

The functional record update syntax is only allowed for structs (struct-like enum variants don't qualify, for example). To fix the previous code, rewrite the expression without functional record update syntax:

    #![allow(unused)]
    fn main() {
    enum PublicationFrequency {
        Weekly,
        SemiMonthly { days: (u8, u8), annual_special: bool },
    }

    fn one_up_competitor(competitor_frequency: PublicationFrequency)
                         -> PublicationFrequency {
        match competitor_frequency {
            PublicationFrequency::Weekly => PublicationFrequency::SemiMonthly {
                days: (1, 15), annual_special: false
            },
            PublicationFrequency::SemiMonthly{ days, .. } =>
                PublicationFrequency::SemiMonthly {
                    days, annual_special: true // ok!
            }
        }
    }
    }