我正在阅读的代码包含以下(略微更改)的RuST代码:

let new_var : Vec<...> = (0..1 << some_number)
                         .into_par_iter()
                         .map(...)
                         .collect();

I recognize that it iterates over a range and constructs elements of a Vec for each number.
But why does it bitshift the 0..1 range? What is the resulting iterator that gets iterated over?

推荐答案

左移运算符<< has higher precedence比范围运算符(..).因此,1 << some_number首先进行判断.

您还可以对以下代码使用招聘(High-Level Intermediate Representation) as an output mode in rust playground to see how rust compiler解析/生成招聘

fn main() {
    let a = (0..1 << 2).into_par_iter();
}

招聘

#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
fn main() {
    let a = #[lang = "Range"]{ start: 0,  end: 1 << 2,}.into_par_iter();
    //                                    ^^^^^^^^^^^
}

Rust相关问答推荐

通用池类型xsx

为什么拥有的trait对象的相等运算符移动了正确的操作数?

Rust kill std::processs::child

如何最好地并行化修改同一Rust向量的多个切片的代码?

两个相关特征的冲突实现错误

如何将单个 struct 实例与插入器一起传递到Rust中的映射

如何从宏调用闭包?

仅发布工作区的二进制 crate

为什么 Rust 的临时值有时有参考性有时没有?

在线程中运行时,TCPListener(服务器)在 ip 列表中的服务器实例之前没有从客户端接受所有客户端的请求

不能将 `*self` borrow 为不可变的,因为它也被borrow 为可变的 - 编译器真的需要如此严格吗?

判断对象是 PyDatetime 还是 Pydate 的实例?

为什么会出现无法移出可变引用后面的 `self.x`错误?

如何在 Rust 中编写修改 struct 的函数

我如何将 google_gmail1::Gmail> 传递给线程生成?

Rust,我如何正确释放堆分配的内存?

将文件的第一行分别读取到文件的其余部分的最有效方法是什么?

Rustfmt 是否有明确类型的选项?

Rust 内联 asm 中的向量寄存器:不能将 `Simd` 类型的值用于内联汇编

有什么办法可以用 Rust 访问 Windows 最近的文件夹吗?