DeclaraçÔes de Bridge Rust

#[cxx::bridge]
mod ffi {
    extern "Rust" {
        type MyType; // Tipo opaco
        fn foo(&self); // MĂ©todo em `MyType`
        fn bar() -> Box<MyType>; // Função livre
    }
}

struct MyType(i32);

impl MyType {
    fn foo(&self) {
        println!("{}", self.0);
    }
}

fn bar() -> Box<MyType> {
    Box::new(MyType(123))
}
  • Os itens declarados em extern "Rust" referenciam itens que estĂŁo no escopo no mĂłdulo pai.
  • O gerador de cĂłdigo CXX usa sua(s) seção(Ă”es) extern "Rust" para produzir um arquivo de cabeçalho C++ contendo as declaraçÔes C++ correspondentes. O cabeçalho gerado tem o mesmo caminho do arquivo de origem Rust contendo a ponte, exceto com uma extensĂŁo de arquivo .rs.h.