我的Rust WebAPI的練習side project告一個段落,我想分享一些心得。
首先,我發現使用Rust來開發Web應用並不像我想像中的那麼困難。在實際動手之前,我原本以為不可變性和所有權問題會成為阻礙我進展的主要障礙,但在撰寫API的過程中,我意外地發現系統中需要使用可變變數的情況相當罕見,而不可變性確實使程式碼更容易理解。當大部分資料都是不可變的時候,實際需要處理所有權問題的情況相對較少。
另一方面,深入瞭解了Axum後,與.Net的Web框架相比,我發現網頁框架的核心內容實際上差異不大,而且Axum和大多數網頁框架都偏向物件導向的設計,因此相關概念大致相同。如果想看看要其他風格的Web框架,warp可能是一個不錯的選擇。
在開發WebAPI時,通常會遇到兩種類型的錯誤。第一種是程式錯誤,例如系統中未處理的null reference,這些問題常常在開發過程中被忽略,但在功能上線後卻經常出現,而且難以進行除錯。在使用Rust通常可以預防這類型問題。第二種錯誤涉及系統模型的設計,這類問題無法僅靠程式語言解決。在接觸Rust之前,我認為OOP是設計模型的終極解決方案,但建模其實有很多種方式。平常工作中。Rust提供了不同的角度,協助工程師拆分功能為多個小模組,並思考如何組織這些模組。與其著重於架構,更重要的是確保每個模組都封裝得宜,這才是構建穩健系統的關鍵。
最後,讓我分享一下對Rust的看法。我認為Rust是一門非常嚴謹的語言,但並不像傳言中那麼難學。儘管它在語法上設定了許多限制,但這些限制都在鼓勵編寫簡潔且可預測的程式碼,以這種方式組織的程式碼通常不難理解。此外,學習Rust實際上讓我改掉一些不良編碼習慣,努力確保每個方法的內容保持簡潔,從而大大減少錯誤的可能性。