package states // Generation is used to represent multiple objects in a succession of objects // represented by a single resource instance address. A resource instance can // have multiple generations over its lifetime due to object replacement // (when a change can't be applied without destroying and re-creating), and // multiple generations can exist at the same time when create_before_destroy // is used. // // A Generation value can either be the value of the variable "CurrentGen" or // a value of type DeposedKey. Generation values can be compared for equality // using "==" and used as map keys. The zero value of Generation (nil) is not // a valid generation and must not be used. type Generation interface { generation() } // CurrentGen is the Generation representing the currently-active object for // a resource instance. var CurrentGen Generation type currentGen struct{} func (g currentGen) generation() {}