如何看待 Rust 語言中新加入的 await 字尾關鍵字?

時間 2021-05-06 17:45:08

1樓:

第一眼看上去不太喜歡這種語法,但是仔細讀了讀沒船大佬的文章,了解為啥這樣設計之後,發現似乎並沒有什麼更好的做法了。

拋棄掉「其他語言await基本都在前面」這種先入為主卻沒有價值的思想障礙,其實.await可能是短期內最優的選擇: 字首形式不方便寫鏈式呼叫,不爽;字尾巨集或pipeline更加通用一致性更強但可能會把await的進度再卡一兩年。

考慮到Rust的edition機制,其實目前定下來什麼語法都沒有問題,之後有啥更合理的選擇,完全可以通過edition機制做隔離,在保證相容性的前提下去掉目前的.await語法。

總結:快點stabilize吧,我等的花兒都謝了。

2樓:「已登出」

反正我覺得字尾關鍵字這個解決方案挺合適的,不單解決了await的問題,後面很多關鍵字都可以受惠,比如.box。

順便提一句,摒棄先入為主的偏見,世界會更美好。

3樓:圓胖腫

真要用字尾直接用方法不就行了,幹嘛用關鍵字關鍵字留給字首啊,dart,vert.x什麼都是這麼做的要麼await future

要麼future.await();

4樓:韓樸宇

眾所周知,Rust裡

foo.bar()

實際上等價於

bar(&foo)

或者bar(&mut foo)

bar(foo)

那麼foo().await

可以理解為等價於

await foo()

是不是就和其他語言長得一樣了.

所以我也希望有字尾巨集這種東西

struct Fooimpl Foo,{}",self,msgstd::process::exit(1

以上純屬個人瞎想.

5樓:

相比於 await fut 來說,當前字尾的 fut.await 更好,因為可以鏈式呼叫,但這個容易和 field 訪問搞混,不是我最喜歡的方案,我也不喜歡 fut.await!

() 這種後置巨集方案

我先前希望的是 fut.@await 或者 fut.!await,反正要加個字元啥的區分一下就好,不過剛剛看到reddit 上一哥們提到了 fut.

await() 並論證了可行性,覺得也很不錯

不過最最重要的是這些方案其實都可以,包括我不太喜歡的中規中矩的前置 await fut 方案。只要不是 await!(fut),都能接受,趕緊 stablize,這比語法風格什麼的都重要!!!

6樓:

跟(await foo().bar()).baz()相比,foo()

.bar()

.await

.baz()

好像看起來還不錯。不過這是在解決其他語言裡根本不會出現的問題。

Edit:把unwrap改成了更為一般的名字

7樓:洛佳

語言設計團隊選擇這個語法,比較出乎我意料。目前社群爭論相當熱烈,等穩定下來再回答這題。

個人咋一看好像不喜歡,可能需要一定時間習慣這種寫法。

怎樣看待 Mozilla 發布的 Rust 語言?

rpbear 目前正在第501次學習rust,希望這次能學會 整體感覺就是如果之前長期使用過C 的話,有很多設計的點是非常不錯的,而且很親切,特別是對於熟悉modern c 的人來說。 鏡花水月 從語言本身去評價沒意義,主要看市場,至少GO受追捧的程度以及生產上的應用都是很可觀的。雖然沒用go寫過大...

如何看待余光中先生的《警惕中文語言中的歐化句式 》這篇文章?

現代漢語在文言文和舊口語基礎上,進行了語法和詞彙擴充。這個過程是通過翻譯引進日文文學實現的。也可以說是間接的歐式語法。超過這批最初現代漢語的部分,被認為是 歐化 並有人加以反對。其實,只要多用,獲得其語法功能,和表達的嚴密性,根本不需要區別對待,都是合理的漢語,甚至是更好的漢語。語法不應該僅為文學服...

如何評價爐石傳說戰旗模式中新加入的英雄拉法姆?

氣自華 很強,但是不是沒法針對屬於中等偏上的強度。針對拉法姆的方法 在第乙個隨從位放衍生卡或一些相對無用的隨從,保證可以送給對面乙個無用的隨從,讓對面的偷牌變成理財。運氣好還能逼拉法姆扔掉乙個隨從換成兩個幣,破壞隊形。拉法姆對於這種反制沒有任何方法。使用拉法姆的方法 高攻擊力的隨從在前,拼運氣拿走對...