3
我有一個盒裝元組以避免遞歸。但是,當我對元組進行模式匹配時,我似乎無法獲得這兩個元組值。爲了說明我的問題,採取the following code:搬出盒裝元組
#[derive(Clone, PartialEq, Debug)]
enum Foo {
Base,
Branch(Box<(Foo, Foo)>)
}
fn do_something(f: Foo) -> Foo {
match f {
Foo::Base => Foo::Base,
Foo::Branch(pair) => {
let (f1, f2) = *pair; // ... What do I do here?
if f2 == Foo::Base { f1 } else { f2 }
}
}
}
所以我的問題是如何獲取到盒子裏面既元組值而不必調用clone
或類似的東西做一個副本。我已經閱讀過關於盒裝語法的內容,但是如果可能的話,我想避免不穩定的特性。這感覺就像是唯一的答案被重新定義爲Branch
Branch(Box<Foo>, Box<Foo>)
,但是這似乎是它避免回答這個問題(這是無可否認的主要思想運動在這一點)。
給出答案,我希望這可以作爲rustc的一個bug。您可能想要打開一個錯誤報告,以便檢查並修復它。 –