Add impls for dropping RustString/RustVec ffi wrappers
diff --git a/src/rust_string.rs b/src/rust_string.rs
index 77a83f6..5133694 100644
--- a/src/rust_string.rs
+++ b/src/rust_string.rs
@@ -1,5 +1,6 @@
use alloc::string::String;
use core::mem::{self, MaybeUninit};
+use core::ptr;
// ABI compatible with C++ rust::String (not necessarily alloc::string::String).
#[repr(C)]
@@ -33,6 +34,12 @@
}
}
+impl Drop for RustString {
+ fn drop(&mut self) {
+ unsafe { ptr::drop_in_place(self.as_mut_string()) }
+ }
+}
+
const_assert_eq!(mem::size_of::<[usize; 3]>(), mem::size_of::<RustString>());
const_assert_eq!(mem::size_of::<String>(), mem::size_of::<RustString>());
const_assert_eq!(mem::align_of::<String>(), mem::align_of::<RustString>());