diff --git a/src/arrayvec.rs b/src/arrayvec.rs index e5ea52d..bd08e1c 100644 --- a/src/arrayvec.rs +++ b/src/arrayvec.rs @@ -1137,6 +1137,11 @@ impl ArrayVec { debug_assert_ne!(ptr, end_ptr); if mem::size_of::() != 0 { ptr.write(elt); + } else { + // The ZST element has logically been moved into the vector. + // There is no memory to write, but dropping `elt` here would + // drop it once now and once again when the vector is dropped. + mem::forget(elt); } ptr = raw_ptr_add(ptr, 1); guard.data += 1;