while let Some(peek_ch) = chars.peek() && peek_ch.is_whitespace() {
chars.next();
}
以上代码是引起生 rust 的投诉
`let` expressions in this position are unstable
see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
我的理解是if-let和while-let链接是稳定的?而且,从这个错误和github问题来看,我不能确定启用什么不稳定特性来允许这种情况,你通常是如何确定的?
2条答案
按热度按时间lqfhib0f1#
问题是你还不被允许使用
&&
和while let
,因为不幸的是稳定had to be reverted的合并如果你使用的是夜间编译器,它会告诉你需要启用什么特性才能使它工作:
这对夜间铁 rust 有效:
Playground link
或者,您可以使用PeterHalls的一个稳定解决方案来解决它。
tjvv9vkg2#
问题出在
&&
上,而不是while let
。正如所写的,您试图匹配表达式chars.peek() && peek_ch.is_whitespace()
的结果,但这没有意义,因为peek
返回Option<T>
,而is_whitespace
返回bool
。错误消息有点误导,因为它认为您正在尝试使用
if let
chains,这是一个不稳定的特性,允许您在多个模式上进行匹配。您可以将其重写为:
或者