基於 Qt 的更聰明的 Rust 方式

https://www.kdab.com/the-smarter-way-to-rust/

KDAB 論 Qt:Rust 的更聰明方式

Rust 在嵌入式系統中的影響日益增長。Rust 在安全性方面表現出色,並與 C++整合常見。結合兩種語言的優勢,尤其是 C++在複雜嵌入式系統中積累的豐富能力。詳細了解整合 Rust 和 C++的重要概念。

加入 Rust 到 C++

將 Rust 添加到現有 C++專案時,需從適當的地方開始。首先氧化(即轉換代碼為 Rust),針對容易出錯、難以維護或具有安全漏洞的領域。專注於自包含、具有清晰接口的模塊,並且主要是程序化而非面向對象的。例如,處理媒體或圖像處理的庫可能是重寫為 Rust 的主要候選對象,因為這些通常容易出現內存安全問題。解析器和輸入處理例程也可以從 Rust 的安全保證中受益。

選擇從外部到內部或內部到外部的 Rust 化

當專案擴大時,需權衡保持具有 Rust 組件的 C++核心與具有 C++庫的 Rust 中心應用的優點。對於較小的新專案,從 Rust 開始可能有助於避免處理 C 外部函數接口(FFI)的複雜性。這個決定可能取決於您對安全的優先考量:如果專案的核心關注點是安全,那麼 Rust 中心的方式可能更可取。反之,若僅在某些 C++專案區域需要安全性,保持核心在 C++中可能更實際。

另一個考慮因素是專案如何處理多執行緒。Rust 和 C++之間混合線程和內存所有權非常複雜且容易出錯。根據應用程式的執行緒使用方式,這可能使決定朝向 C++或 Rust 成為主要的「宿主」應用程式。

保持 C++的優勢

儘管 Rust 提供許多優勢,特別是在安全性方面,但 C++也有不應輕率拋棄的優點。重新撰寫的決定應該是戰略性的,基於實際需求而非追求語言純粹性,因為透過重寫經過良好測試並穩定的 C++代碼可能引入新漏洞。經過時間驗證的 C++代碼,特別是在信號處理或密碼學等領域,最好保持不變。這類代碼通常高度優化、穩定,並且不容易出現內存相關問題。俗話說,如果它工作正常,就不要「修復」它。

應對 Rust 限制

儘管 Rust 生態系統不斷發展,但仍相對年輕。依賴由小團隊或單個人維護的套件存在固有風險。此外,由於 Rust 仍處於快速語言演進期,這可能對大規模或長期專案構成挑戰。在某些情況下,例如非常大的代碼庫、特定嵌入式支援要求或具有長期開發週期的專案中,C++可能仍然是更實際的選擇。明智的做法是在重視穩定性和長期性的場合使用 C++,而在重視安全性但具備某些開發靈活性的場合使用 Rust。

總結

通過將 C++的可靠性與 Rust 的安全性相結合,開發者可以設計持久的系統,同時將常見的程式設計缺陷風險降至最低。如果您對此主題有興趣,歡迎閱讀我們有關 Rust/C++整合的最佳實踐指南。

關於 KDAB

如果您喜歡本文並希望閱讀類似內容,請考慮通過我們的 RSS 訂閱。

訂閱 KDAB TV 以獲取相似的資訊性短視頻內容。

KDAB 提供領先市場的 Qt、C++和 3D/OpenGL 軟體諮詢和開發服務以及培訓。聯繫我們。

這篇文章首次出現於 KDAB「更聰明的 Rust 使用方式」。

via Planet Qt

June 27, 2024 at 04:00PM

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *