Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops while循环可以计算为一个值吗?_Loops_Rust - Fatal编程技术网

Loops while循环可以计算为一个值吗?

Loops while循环可以计算为一个值吗?,loops,rust,Loops,Rust,我正在学习Rust,今天我偶然发现能够通过if/else表达式分配变量。例如: let y = 5; let x = if y > 20 { 20 } else { y }; 使用while循环是否有办法做到这一点?我试过: fn main() { let mut n = 0; let mut num = 0; num += while n < 10 { n += 1; 5 }; } 当然,我可以将num+=5

我正在学习Rust,今天我偶然发现能够通过
if
/
else
表达式分配变量。例如:

let y = 5;

let x = if y > 20 { 20 } else { y };
使用
while
循环是否有办法做到这一点?我试过:

fn main() {
    let mut n = 0;

    let mut num = 0;

    num += while n < 10 {
        n += 1;
        5
    };
}
当然,我可以将
num+=5
放在while循环中,但这就失去了乐趣

这是我生锈的第一天,所以我甚至不知道是否有可能实现我的想法。这真的可能吗?我是否犯了语法错误

这是我尝试运行的代码的另一个版本,但也无法运行:

fn main() {
    let mut num = 0;

    num += while num < 50 {
        5
    };
}
fn main(){
设mut num=0;
num+=而num<50{
5.
};
}

否。
循环的值始终是
()
,单位类型

是否增强了
循环
循环,以便能够使用值中断:

let x = loop {
    break 42;
};
println!("{}", x);

RFC的目的与这里尝试的完全不同;我可以自信地说,每次迭代求和以产生循环表达式的结果是永远不会发生的