A value with a custom `Drop` implementation may be dropped during const-eval. Erroneous code example: ```compile_fail,E0493 enum DropType { A, } impl Drop for DropType { fn drop(&mut self) {} } struct Foo { field1: DropType, } static FOO: Foo = Foo { field1: (DropType::A, DropType::A).1 }; // error! ``` The problem here is that if the given type or one of its fields implements the `Drop` trait, this `Drop` implementation cannot be called within a const context since it may run arbitrary, non-const-checked code. To prevent this issue, ensure all values with a custom `Drop` implementation escape the initializer. ``` enum DropType { A, } impl Drop for DropType { fn drop(&mut self) {} } struct Foo { field1: DropType, } static FOO: Foo = Foo { field1: DropType::A }; // We initialize all fields // by hand. ```