Декларації мосту на мові Rust

#[cxx::bridge]
mod ffi {
    extern "Rust" {
        type MyType; // Непрозорий тип
        fn foo(&self); // Метод на `MyType`
        fn bar() -> Box<MyType>; // Вільна функція
    }
}

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.