我发现使用(1..4)

fn main() {
    for v in (1..4) {
        println!("{}", v);
    }
}

{1..4}

fn main() {
    for v in {1..4} {
        println!("{}", v);
    }
}

得到同样的结果."(1..4)"和"{1..4}"迭代之间有什么不同的语义吗?

推荐答案

它们产生相同的迭代器.甚至可以省略括号/大括号:

fn main() {
    for v in 1..4 {
        println!("{}", v);
    }
}

一般来说,表达式可以用(){}括起来.不过有一点不同:{}创建一个块,您可以在其中写入语句(比如let).表达式的解析方式也有细微的差别.Edit:我找到了a blog article that describes another difference in how coercion and borrowck works个.

如果你不需要陈述,通常()是首选.

Rust相关问答推荐

为什么函数不接受选项T参数的所有权?

当rust中不存在文件或目录时,std::FS::File::Create().unwire()会抛出错误

异步FN中的 rust 递归

制作一片连续整数的惯用Rust 方法?

RUST应用程序正在退出,错误代码为:(退出代码:0xc0000005,STATUS_ACCESS_VIOLATION)

为什么这个变量不需要是可变的?

如何go 除多余的(0..)在迭代中,当它不被使用时?

rust中的库插件管理器,现在是否可行?

Rust 1.70 中未找到 Trait 实现

如何使用 Rust Governor 为每 10 秒 10 个请求创建一个 RateLimiter?

&self 参数在 trait 的功能中是必需的吗?

打印 `format_args!` 时borrow 时临时值丢失

为什么允许重新分配 String 而不是 *&String

使用 HashMap 条目时如何避免字符串键的短暂克隆?

如何在 Rust 中返回通用 struct

Rust,使用枚举从 HashMap 获取值

Rust HRTB 是相同的,但编译器说一种类型比另一种更通用

TinyVec 如何与 Vec 大小相同?

如何在 Rust 的泛型函​​数中同时使用非拥有迭代器和消费迭代器?

加入动态数量的期货