相关疑难解决方法(0)

可以在表达式中组合赋值和比较吗?

在C中,在单个表达式中分配和比较是很常见的:

n = n_init;
do {
    func(n);
} while ((n = n.next) != n_init);
Run Code Online (Sandbox Code Playgroud)

据我了解,这可以用Rust表示:

n = n_init;
loop {
    func(n);
    n = n.next;
    if n == n_init {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

其作用与C版本相同(假设循环体不使用continue).

是否有更简洁的方式在Rust中表达这个,或者上面的例子是理想的?

出于这个问题的目的,假设所有权或满足借用检查器不是问题.由开发人员来满足这些要求.

例如,作为整数:

n = n_init;
loop {
    func(&vec[n]);
    n = vec[n].next;
    if n == n_init {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这看起来很明显,Rust的例子是惯用的Rust - 但是我希望将这种循环风格转移到Rust,我很想知道是否有更好/不同的表达方式.

flow-control rust

2
推荐指数
1
解决办法
290
查看次数

标签 统计

flow-control ×1

rust ×1