CXX庫提供Rust和C+ 之間的安全相互呼叫

banq發表於2022-03-12

CXX庫提供了一種安全的機制,用於從 Rust 呼叫 C++ 程式碼和從 C++ 呼叫 Rust 程式碼。它開闢了一個共性機制,其中 Rust 和 C++ 在語義上非常相似,並指導程式設計師在這個機制內有效地表達他們的語言邊界。
CXX 填充了低階別的東西,以便您獲得安全的繫結,防止在不安全的 C 樣式簽名上執行外部函式介面的陷阱。
從語言邊界的高階描述來看,CXX 使用型別和函式簽名的靜態分析來保護 Rust 和 C++ 的不變數。然後它使用一對程式碼生成器在兩側有效地實現邊界以及任何必要的靜態斷言,以便稍後在構建過程中驗證正確性。
由此產生的 FFI 橋以零或可忽略的開銷執行,即無需複製、無需序列化、無需記憶體分配、無需執行時檢查。

cxx在FaceBook等大規模生產中已經使用。

可被用於製作安全的 QT,rust-qt 的方法和示例 :https://github.com/rust-qt/examples
當你構建了一個 rust 庫,而你的二進位制檔案根本不是由 rust 驅動的。rust cxx-qt 提供了由連結在 rust 庫中的 c++ 主驅動程式驅動;
但rust-qt 方法更好,因為您可以使用“cargo build --release”來構建基於 rust 的 qt gui。
最重要的是,使用 rust-qt 繫結,您的主要驅動程式是 rust,

相關文章