owned this note changed 4 years ago
Linked with GitHub

那些Rust裡好用的抽象與實用語法火力展示 - Wayne Tsai

tags: COSCUP2021 zh-tw COSCUP2021 COSCUP 主議程軌 RB105 - Main Track

歡迎來到 https://hackmd.io/@coscup/2021 共筆

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

點擊本頁上方的 開始用 Markdown 一起寫筆記!
手機版請點選上方 按鈕展開議程列表。

關於本日演講的Slide

演講Slide連結

分享裡用於對照的相關JS/TS Library如下:

  1. pratica
    https://github.com/rametta/pratica
  2. ramda
    https://ramdajs.com/

補充:

  1. 53、54頁這邊是說rust的迭代器在做collect的時候,collect方法底下會執行到fromIterator,所以在這個時候可以做到型態轉換,實際上在使用時,只要指定要轉換的對應型別就可以將Vec裡的Result型態翻轉過來。

  2. 最後面的範例處理巢狀的struct時使用了clone,繞過了一些編譯的問題。在rust中處理struct野會有下面連結提到的問題,在rust 2021 edition會解決。

https://blog.rust-lang.org/2021/05/11/edition-2021.html#disjoint-capture-in-closures

限於時長的關係,講者把一些幫助剛接觸的朋友理解Rust的相關slide與內容做了幾次的刪減,後面才錄製了一個28min的影片,語速大概是平常的1.x倍,講者盡力了,還請見諒
m () m。

部分刪減前的slide也已上傳,Coscup2021-rust-toturial

原本的slide刪減過的內容整理後抽出來,包含簡單的TS跟Rust的基本對照,主要藉由對比來強調一些語法上的差異處。

可以注意下

  1. rust裡的function 跟 if、else都是expression,所以不用特別使用return。
  2. rust裡的if/else expression可以解決掉巢狀三元的一些問題。

後面有marco的使用,rust裡在處理使用不定參數函數的需求時,需要用到macro。

P.S. ownership的部分因為時間關係,所以沒有一開始沒有被放在下面的slide,但是還是應該知道的,所有學習rust的人都應該了解所有權跟借用的規則。

問答部分

  1. 問答時有提到在處理stack_trace的error_chain macro是這一套,可以配合result回傳錯誤時使用 (註:error_chain crate已經不再維護,如有需求可以參考底下連結選用自己合適的library)。

更多Rust生態系裡跟錯誤處理相關的library,可以參考 蚂蚁集团 CeresDB 团队 | 关于 Rust 错误处理的思考 一文的介紹。

  1. 關於Rust效能優化的部分,有篇很好的文章可以參考 Achieving warp speed with Rust
Select a repo