Rust 如何从for循环返回多个值?

Rust 如何从for循环返回多个值?,rust,Rust,我将重写我以前的问题,而且不清楚。我的问题是当我试图从for循环返回一个值时 这很好: fn main(){ 计数器(5,8); } fn计数器(开始:u32,结束:u32){ 对于开始中的n..=结束{ println!(“{}”,n); } } 这是行不通的: fn main(){ 让结果=计数器(5,8); println!(“{}”,结果); } fn计数器(开始:u32,结束:u32)->u32{ 对于开始中的n..=结束{ N } } 我尝试了很多东西,但都没能成功。我希望有人能

我将重写我以前的问题,而且不清楚。我的问题是当我试图从for循环返回一个值时

这很好:

fn main(){
计数器(5,8);
}
fn计数器(开始:u32,结束:u32){
对于开始中的n..=结束{
println!(“{}”,n);
}
}
这是行不通的:

fn main(){
让结果=计数器(5,8);
println!(“{}”,结果);
}
fn计数器(开始:u32,结束:u32)->u32{
对于开始中的n..=结束{
N
}
}

我尝试了很多东西,但都没能成功。我希望有人能帮助我理解为什么。

如果您声明这样的函数

fn counter(start: u32, end: u32) -> u32
然后告诉编译器它应该返回一个
u32
值,即一个无符号整数

for循环迭代一组数字,但它只能返回其中一个。您可以更改函数的返回类型,以返回一个
Vec
,一个
u32
的向量,该向量是一个可以存储大量
u32
值的数据结构:

fn counter(start: u32, end: u32) -> Vec<u32> {
    (start..=end).collect()
}
fn counter(start: u32, end: u32) -> impl Iterator<Item = u32> {
    start..=end
}
迭代器惰性地生成从
start
end
的值,您可以在调用代码中对其进行迭代,例如

for i in counter(1, 10) {
    println!("{}", i);
}

打印从1到10的数字。

您好,欢迎使用StackOverflow!提示:您只需要为循环使用内部的
,您可以只打印所需的输出,而不必尝试从循环中返回字符串。欢迎使用StackOverflow!我不太明白你想达到什么目的。是否要从函数返回字符串向量?在这种情况下,应使用返回类型
Vec
。还是要在每次迭代中打印字符串?在这种情况下,您应该使用类似于
println!()
来打印它们。在任何情况下,您都可能希望删除for循环周围的无限
循环。我试图简化代码来提问,但不清楚,对不起。我将按照您的建议(删除无限循环)并查看是否可以重新提问。@AitorZaldua如果需要返回字符串,为什么不
返回s
<代码> < <代码>循环没有值,而代码>循环<代码>只有一个值,通过代码>破译< /代码>。谢谢斯温,这正是我需要知道的,@ AitorZaldua,如果这个答案解决了你的问题,考虑接受它来奖励用户帮助你Outtok,谢谢你,KMdRyko,我不知道我必须检查答案(对不起斯温)……完成了。