We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent ea0b69e commit e7e164eCopy full SHA for e7e164e
1 file changed
src/data_repr.rs
@@ -1,5 +1,6 @@
1
2
use std::mem;
3
+use std::mem::ManuallyDrop;
4
use std::ptr::NonNull;
5
use std::slice;
6
use crate::extension::nonnull;
@@ -17,22 +18,20 @@ pub struct OwnedRepr<A> {
17
18
}
19
20
impl<A> OwnedRepr<A> {
- pub(crate) fn from(mut v: Vec<A>) -> Self {
21
+ pub(crate) fn from(v: Vec<A>) -> Self {
22
+ let mut v = ManuallyDrop::new(v);
23
let len = v.len();
24
let capacity = v.capacity();
25
let ptr = nonnull::nonnull_from_vec_data(&mut v);
- mem::forget(v);
26
Self {
27
ptr,
28
len,
29
capacity,
30
31
32
- pub(crate) fn into_vec(mut self) -> Vec<A> {
33
- let v = self.take_as_vec();
34
- mem::forget(self);
35
- v
+ pub(crate) fn into_vec(self) -> Vec<A> {
+ ManuallyDrop::new(self).take_as_vec()
36
37
38
pub(crate) fn as_slice(&self) -> &[A] {
0 commit comments