Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Объявления моста Rust

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

#[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.