我正在尝试使用FFI编写一些涉及C接管结构体所有权的Rust代码:
fn some_function() {
let c = SomeStruct::new();
unsafe {
c_function(&mut c);
}
}
我希望 c_function
接管 c
的所有权。在 C++ 中,可以通过 unique_ptr
的 release
方法来实现这一点。Rust 中是否有类似的方法?
std::unique_ptr
有一个模板参数Deleter
,默认为std::default_delete<T>
。通过提供一个公开的Rust函数来执行删除操作可能会很方便。或者,您可以专门化std::default_delete
,以便所有实例unique_ptr<RustType>
都能正确地被释放。 - Anthony