diff --git a/nodrop-union/src/lib.rs b/nodrop-union/src/lib.rs index a7fc9e2..94a5061 100644 --- a/nodrop-union/src/lib.rs +++ b/nodrop-union/src/lib.rs @@ -25,10 +25,20 @@ extern crate core as std; use std::ops::{Deref, DerefMut}; #[allow(unions_with_drop_fields)] +#[derive(Copy)] union UnionFlag { value: T, } +impl Clone for UnionFlag { + fn clone(&self) -> Self { + unsafe { + UnionFlag { value: self.value.clone() } + } + } +} + +#[derive(Copy, Clone)] pub struct NoDrop(UnionFlag); impl NoDrop {