Rust のブリッジ宣言
#[cxx::bridge]
mod ffi {
extern "Rust" {
type MyType; // オペーク型
fn foo(&self); // `MyType` のメソッド
fn bar() -> Box<MyType>; // Free function
}
}
struct MyType(i32);
impl MyType {
fn foo(&self) {
println!("{}", self.0);
}
}
fn bar() -> Box<MyType> {
Box::new(MyType(123))
}
- 親モジュールのスコープ内にある
extern "Rust"
参照アイテムで宣言されたアイテム。 - CXX コード ジェネレータは、
extern "Rust"
セクションを使用して、対応する C++ 宣言を含む C++ ヘッダー ファイルを生成します。生成されるヘッダーのパスは、rs.hというファイル拡張子部分を除き、ブリッジを含む Rust ソースファイルと同じになります。