【发布时间】:2018-11-14 11:25:50
【问题描述】:
C++
shared_ptr<Foo> create_foo();
生锈
extern "C" {
pub fn create_foo() -> ???;
}
Bindgen 将 shared_ptr 变成不透明的 blob。
我不能只取原始指针,因为 C++ 代码不知道我有一个对 Foo 的引用,并且可能会调用它的解构函数。
【问题讨论】:
-
您是否有可能以 C++ 或 Rust 拥有对象并管理其生命周期的方式设计代码?你可以在它被销毁时触发一个回调,告诉“其他”语言停止持有对它的引用。
-
你也可以返回一个
new shared_ptr<Foo>(...)...有点像有时从Rust方面完成的双重Box技巧。 -
只是为了澄清这是一个现有的 c++ 库,我无法控制指针的创建方式。我只是从一个函数中得到一个 shared_ptr
。 -
所以你希望能够访问指针内部类型?
-
@Stargateur 是的,但我不希望它在我使用它时是免费的,如果我只使用原始指针,我不能保证。
标签: c++ rust shared-ptr ffi