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 ソースファイルと同じになります。