For loop 从迭代中获取最后一个元素的优雅/最佳解决方案

For loop 从迭代中获取最后一个元素的优雅/最佳解决方案,for-loop,rust,scope,For Loop,Rust,Scope,我通过一个通道接收多条消息,在对它们进行迭代之后,我希望保留最后一个元素以供进一步使用。我的第一次可能很糟糕!方法是声明一些变量,然后在每个循环中分配它 let last = 0; for some in rx_from_channel.iter() { let last = some; } let a = last + 5; 我真的不喜欢这个解决方案-是否有一个方法可以避免在每个循环中分配最后一个? 此外,在第一次在for{}循环中使用let last之后,我本以为在循环上方声明的变

我通过一个通道接收多条消息,在对它们进行迭代之后,我希望保留最后一个元素以供进一步使用。我的第一次可能很糟糕!方法是声明一些变量,然后在每个循环中分配它

let last = 0;
for some in rx_from_channel.iter() {
   let last = some;
}

let a = last + 5;
我真的不喜欢这个解决方案-是否有一个方法可以避免在每个循环中分配最后一个? 此外,在第一次在for{}循环中使用let last之后,我本以为在循环上方声明的变量超出了范围,并且在for{}循环之后,ļast应该根本不可用。编译器提出了其他建议-为什么?

方法不能解决您的问题?

您可以执行以下操作:

让last=rx_from_channel.iter.last.unwrap_或_else|&0; 设a=last+5; 看

fn lastself->Option 使用迭代器,返回最后一个元素