在C,這是常見的分配和在一個單一的表達比較:可能將表達式中的賦值和比較結合起來?
n = n_init;
do {
func(n);
} while ((n = n.next) != n_init);
據我所知,這可以在拉斯特表示爲:
n = n_init;
loop {
func(n);
n = n.next;
if n == n_init {
break;
}
}
其中一期工程相同,C版(假設循環的主體不使用continue
)。
有沒有一種更簡潔的方式來表達這在鏽,或者是上述理想的例子?
爲了這個問題的目的,假設所有權或滿足借用檢查器不是問題。開發人員需要滿足這些要求。
例如,作爲一個整數:
n = n_init;
loop {
func(&vec[n]);
n = vec[n].next;
if n == n_init {
break;
}
}
這似乎是顯而易見的是生鏽的例子是地道的防鏽 - 但是我期待了很多這種風格環路的移動生鏽,我m有興趣知道是否有更好/不同的表達方式。
我會考慮將模式包裝到一個迭代器中,所以你可以這樣做:'for some_iter(n_init){func(n)}' –
請你發佈完整的例子。每次發佈代碼片段時,我們都必須猜測涉及的類型可能是什麼。他們是「複製」嗎?他們擁有某種東西嗎?我們不知道!我們不知道! –
@Matthieu M對能夠表達什麼類型的流量控制感興趣,我不想在我的問題中包含確切的類型,因爲它分散了其他方面,而這一部分我寧願管理自己。 – ideasman42