CXX庫提供Rust和C+ 之間的安全相互呼叫
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,
相關文章
- 微服務之間的相互呼叫微服務
- eureka踩過的坑之註冊服務相互之間呼叫
- Vue--子元件之間相互呼叫及傳值Vue元件
- C和Go相互呼叫Go
- Java和groovy相互呼叫Java
- js和vue方法的相互呼叫(iframe父子頁面的方法相互呼叫)。JSVue
- webview js和java相互呼叫WebViewJSJava
- 資料庫中兩表之間相互更新的語法資料庫
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- python和c++的相互呼叫教程PythonC++
- Spring Cloud之微服務之間相互呼叫、如何讓一個微服務呼叫另外一個微服務SpringCloud微服務
- WebAssembly實踐指南——C++和Rust透過wasmtime實現相互呼叫例項WebC++RustASM
- json字串和js物件之間相互轉換JSON字串物件
- 初識Spring Cloud Eureka(三)(Eureka客戶端之間 服務的相互呼叫)SpringCloud客戶端
- Android-Java 和 JavaScript 相互呼叫AndroidJavaScript
- Windows 下 c++ 呼叫 Rust 庫的例子WindowsC++Rust
- asp.net中DataTable和List之間相互轉換ASP.NET
- mysql時間與字串之間相互轉換MySql字串
- spark: RDD與DataFrame之間的相互轉換Spark
- Golang 陣列和字串之間的相互轉換[]byte/stringGolang陣列字串
- Python 實現Excel和TXT文字格式之間的相互轉換PythonExcel
- 使用boost庫處理 int 、float、string之間相互轉換
- javascript時間戳和時間格式的相互轉換JavaScript時間戳
- c與c++的相互呼叫C++
- OC 與 Swift 相互呼叫Swift
- Eureka的微服務之間呼叫微服務
- SAP ABAP 程式之間的呼叫
- 在Java中使用panama FFI呼叫Rust庫JavaRust
- c++中string類物件和字元陣列之間的相互轉換C++物件字元陣列
- 《死亡迴圈》設計思考-玩家能力和關卡之間的相互影響
- Android JNI開發系列之Java與C相互呼叫AndroidJava
- Python時間戳的使用和相互轉換Python時間戳
- dispaly、position、float之間的關係與相互作用
- 前端框架iframe相互呼叫方法前端框架
- 建構函式之間的呼叫函式
- SQL Server 字串和時間相互轉換SQLServer字串
- fragment之間相互傳資料、共享資料Fragment
- Android px、dp、sp之間相互轉換Android