Static rustc_lint_defs::builtin::CENUM_IMPL_DROP_CAST

source ·
pub static CENUM_IMPL_DROP_CAST: &Lint
Expand description

The cenum_impl_drop_cast lint detects an as cast of a field-less enum that implements Drop.


enum E {

impl Drop for E {
    fn drop(&mut self) {

fn main() {
    let e = E::A;
    let i = e as u32;



Casting a field-less enum that does not implement Copy to an integer moves the value without calling drop. This can result in surprising behavior if it was expected that drop should be called. Calling drop automatically would be inconsistent with other move operations. Since neither behavior is clear or consistent, it was decided that a cast of this nature will no longer be allowed.

This is a future-incompatible lint to transition this to a hard error in the future. See issue #73333 for more details.