2024-02-07
本文由 ChatGPT(gpt-4-1106-preview) 翻譯。
歡迎閱讀Rust 本週動態的又一期內容! Rust 是一種賦予所有人建造可靠且高效軟體的程式語言。 這是對其進展和社群的每週摘要。 想要在這裡提及某些內容嗎?在 Twitter 上標記我們 @ThisWeekInRust 或在 mastodon.social 上的 @ThisWeekinRust,或者發送我們一個 pull 請求。 想要參與進來嗎?我們熱愛貢獻。
Rust 本週動態 是在 GitHub 上公開開發的,並且存檔可以在 this-week-in-rust.org 查閱。 如果您發現本週的刊物中有任何錯誤,請提交一個 PR。
本週的crate是embedded-cli-rs,這是一個方便在嵌入式設備上創建命令列介面(CLI)的函式庫。
感謝Sviatoslav Kokurin自行推薦!
一直想要對開放原始碼專案做出貢獻,但不知道從何下手? 每週我們會從 Rust 社群中挑選一些任務供您挑選並著手開始!
其中一些任務也許有導師可供咨詢,訪問任務頁面獲取更多資訊。
SqlxDatabase 中實現事件ockam project ticket 以及 ockam project enroll 的輸出,支持 --output json如果您是 Rust 專案擁有者,並且在尋找貢獻者,請在這裡提交任務。
您是新手或有經驗的講者,尋找一個地方分享些酷的東西嗎?本節突出顯示正在計劃中的活動,並接受提交申請成為該活動的講者。
如果您是活動組織者並希望擴大您的活動影響範圍,請透過向 TWiR 提交 PR 提交提交網站的連結。
在過去的一周內,有 309 個拉取請求被合併
為 hashmap 中的 keys 和 values 添加遺失的 potential_query_instability
使匹配 NaN 變為嚴重錯誤,並移除 illegal_floating_point_literal_pattern 的其餘部分
在 core 中新增 LocalWaker 和 ContextBuilder 類型,並在 alloc 中新增 LocalWake 特質
codegen_gcc: 改進文件抑制的迭代器 這些是Rust語言的官方包管理工具Cargo以及Rust的文件工具Rustdoc的一些最近的更新和修正:
這些更新顯示了Rust相關工具的持續改善,包括增加使用者體驗、穩定性、安全性和錯誤處理。
redundant_locals: 考慮到經由值捕獲的閉包manual_c_str_literalslint_groups_priority lintref_as_ptrwildcard_imports配置新增忽略特定導入的功能unused_io_amount中對Ok(lit)、unreachable!和unwrap的假陽性問題include! 巨集內部包含的文件進行 GOTO 定義Subtree::token_trees 從 Vec 更換為箱型切片2024年2月7日至2024年3月6日之間的Rusty活動 🦀
(本列表僅提供有關Rust語言相關活動的日期,實際活動內容、地點及詳細資訊,請關注相應組織者發布的最新消息。)
如果您正在舉辦Rust活動,請將其添加到日曆中,以便在此提及。請記得添加活動的鏈接。 若需獲取日曆訪問權限,請通過電子郵件聯繫[Rust社群團隊][community]。
請查看最新的 Reddit r/rust 上的 Who's Hiring 討論串。
我的看法是,如果不了解 Arc、Mutex、變數/引用的可變性以及 async 和 await 語法最終如何編譯,你就無法正確且流暢地使用異步 Rust。Rust 強迫你了解事情為什麼會是這樣以及它們是如何運作的。它只給你最小抽象來做一些如果自己動手可能會很繁瑣的事情。
我有機會在兩個項目上工作,這些項目極大地迫使我理解 async/await 是如何工作的。第一個項目是將一個完全同步的庫轉換為,只需要一個同步特質就能與外部服務通訊。一切聽起來都很好,對吧?好吧,這成為問題當我們試圖移植它到瀏覽器時。瀏覽器是單線程的,根本不能阻塞 JavaScript 運行時!它可以說是 Rust 使用者最奇怪的環境。根本不可能重寫整個庫,因為它已經在其他平台的生產環境中發布了。
我們改為使用異步語法重寫了網絡部分,但使用了我們自己的生成器。這個想法很簡單:生成器在被調用時會產生一個未來(future),而產生的未來可以被等待。但是!產生的未來包含一個指向生成器的 arc 指針。這意味著我們可以將我們正在等待的值餵給生成器,然後持有生成器引用的調用者可以將結果餵回函數並恢復它。對於瀏覽器,我們使用原生瀏覽器 API 派生網絡通信;對於其他平台,我們只是使用常規的阻塞網絡呼叫。其他平台的外部介面保持不變。
老實說,我不認為其他任何語言可能做到這一點。也許是 C 或 C++,但它們絕對不會有相同的開發速度和開發者體驗。
我相信人們已經提到過,但 Rust 目前的異步模型是最合理的選擇。它確實為開發者造成了痛苦,但另一方面,沒有更好的異步模型適用於嵌入式或 WebAssembly。
– /u/Top_Outlandishness78 在 /r/rust
感謝 Brian Kung 的建議!
《這週在 Rust》由以下編輯:nellshamrell、llogiq、cdmistman、ericseppanen、extrawurst、andrewpollack、U007D、kolharsam、joelmarcey、mariannegoldin、bennyvasquez.
電子郵件列表主辦由 The Rust Foundation