Rust 橋接器宣告

#[cxx::bridge]
mod ffi {
    extern "Rust" {
        type MyType; // Opaque type
        fn foo(&self); // Method on `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++ 標頭檔案。產生的標頭與包含橋接器的 Rust 來源檔案具有相同路徑,但副檔名為 .rs.h。