Rust Bridge Declarations

#[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 소스 파일과 동일한 경로를 갖습니다.