如何評價Rust1 26中的新特性

時間 2021-05-06 19:29:37

1樓:

鏈結不能不放啊 https://

blog.rust-lang.org/2018

/05/10/Rust-1.26.html

例子基本都有了。

我認為 impl trait 的主要用途以及和 trait object(Box 或 &Foo)的主要區別在於函式簽名的返回型別:

比如典型的返回乙個 closure:

// before

fnfoo

()-> Box

i32)

-> i32

>// after

fnfoo

()-> implFn(

i32)

-> i32

如果乙個函式只可能 return 一種 implementation ,那就用 impl trait ,因為:

使用「靜態派發」,因為具體型別在編譯期就知道,用不著動態派發

返回型別沒有 box ,方便易用,還沒有 allocation

方便做優化,比如 inline

但如果可能 return 多種 implementations ,那就只能用「動態派發」的 trait object 了,使用虛表在執行時確定函式指標。

至於函式引數上的區別,在於:

Oh, and one last thing: to make the syntax a bit more symmetrical, you can useimpl Traitin argument position too. That is:

// before

fnfoo

>(x: T){

// after

fnfoo

(x: impl

Trait){

which can look a bit nicer for short signatures.

讓函式簽名更短了233。

2樓:juu wiio

Add RFC undo-universal-impl-trait. by phaazon · Pull Request #2444 · rust-lang/rfcs

雖然看起來很搞,反正我投贊成票

希望出個1.26.1就把這個移除掉,雖然不太可能已經被強行關閉了

3樓:

大部分是語法糖,而且還都不「穩」,比如說那個列表匹配:

letx=[

T,T];

let[a,

b]=x

;這個算是 Rust 的基本操作了,但是現在需要加上 -Z borrowck=mir才行

對impl Trait社群總結的小筆記 Notes on impl Trait r/rust

真正值得期待的是 Rust 下乙個 nightly,新一代 borrow checker,比nll效能還優秀,初期測試的編譯速度提公升明顯(注意圖中的nll)主體基本完成,正在優化檢查過程和逐步引入 rustc,應該會在乙個月以內跟大家見面

4樓:FGO 輝夜

基本上來說大都是語法糖,寫上去很不錯,詳情看 @shingtaklam1324

impl Trait這個我在嘗試能不能繞過FnBox來寫高等函式……其實也還是FnOnce的問題,FnMut和Fn少了Box變成了編譯期確定了Size也不錯

5樓:F001

我同意 @shingtaklam1324 大部分的總結,只是對 impl Trait 的說法有點異議。

fnid_impl

(a: impl

Bar)

-> impl

Barfn

id_gen

>(a: T

)-> T

fnid_where

(a: T

)-> T

where

T: Bar

這三種寫法不同。第一種和後面兩種意義不一樣。示例如下:

usestd::string::ToString;fnid_impl

(arg: impl

ToString

)-> impl

ToString

fnmain()"

,s.to_string

());

}這麼呼叫是可以的。因為函式簽名並沒有約束引數裡面的 impl ToString 和返回型別 impl ToString 是同乙個型別。

// f 是跟 f1 一樣的,跟 f2 不一樣fnf(arg1: impl

Trait

,arg2: impl

Trait){}

fnf1

T2>(arg1: T1

,arg2: T2){}

fnf2

(arg1: T

,arg2: T){}

如何評價川普給希拉莉新取的名字, Heartless Hillary

這種黑點明顯是直擊白左靈魂的,聖母最受不了這個,雖然他們本來就支援桑德斯反希拉莉 但是你國網際網路上某些整天批判別人聖母的的川普粉也跟著黑,就是最後一層臉皮都不要了,這屆看日劇學法律的中華田園右不行。 錢晉翔 她早年是一名律師,在律師界赫赫有名,她年輕時候擁有無與倫比的美貌,後來,她嫁給了乙個足以改...

rust中如何實現返回可變引用的迭代器?

Jason5Lee 找到乙個trade off pubstruct RowIter a impl a Iterator forRowIter a Nugine 沒有什麼所有權問題是 Rc 不能解決的,如果有,那就再套一層。開完玩笑,讓我們看看為什麼 Safe Rust 中無法實現題目中的邏輯。迭代器...

如何評價川普在29日提出的新口號 Buy American and Hire American ?

Xizhi Zhu 說句實話,如果你不支援你所居住國家的商品和勞工,除非你已經準備好移民,否則到最後倒霉的就是你自己。你自己想想,要是什麼東西都是買外國的,雇人也先考慮老外。到最後,你自己的國家,會有多少人失業下崗?下崗怎麼辦?這些人如何生存?到最後錢還不是從你的稅收裡面出,大家一起倒霉,還不如一開...