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
- js和vue方法的相互呼叫(iframe父子頁面的方法相互呼叫)。JSVue
- python和c++的相互呼叫教程PythonC++
- webview js和java相互呼叫WebViewJSJava
- Spring Cloud之微服務之間相互呼叫、如何讓一個微服務呼叫另外一個微服務SpringCloud微服務
- WebAssembly實踐指南——C++和Rust透過wasmtime實現相互呼叫例項WebC++RustASM
- 初識Spring Cloud Eureka(三)(Eureka客戶端之間 服務的相互呼叫)SpringCloud客戶端
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- Golang 陣列和字串之間的相互轉換[]byte/stringGolang陣列字串
- Windows 下 c++ 呼叫 Rust 庫的例子WindowsC++Rust
- Python 實現Excel和TXT文字格式之間的相互轉換PythonExcel
- mysql時間與字串之間相互轉換MySql字串
- c與c++的相互呼叫C++
- c++中string類物件和字元陣列之間的相互轉換C++物件字元陣列
- Android JNI開發系列之Java與C相互呼叫AndroidJava
- OC 與 Swift 相互呼叫Swift
- iframe父子級相互呼叫
- SAP ABAP 程式之間的呼叫
- Eureka的微服務之間呼叫微服務
- 在Java中使用panama FFI呼叫Rust庫JavaRust
- 時間有幾種格式、相互之間如何轉換?
- 《死亡迴圈》設計思考-玩家能力和關卡之間的相互影響
- android中String與InputStream之間的相互轉換方式Android
- dispaly、position、float之間的關係與相互作用
- Apple開發_NSImage與CIImage之間的相互轉換APP
- SpringCloud之服務提供與呼叫(Ribbon,Feign)SpringGCCloud
- 建構函式之間的呼叫函式
- fragment之間相互傳資料、共享資料Fragment
- Spring Cloud中如何保證各個微服務之間呼叫的安全性SpringCloud微服務
- 服務之間的呼叫 HTTP代替RPC?HTTPRPC
- eureka實現服務之間的呼叫
- 服務與服務之間的呼叫
- 動態庫的建立和呼叫
- Rust的安全性和穩健型Rust
- go語言與c語言的相互呼叫GoC語言