// RangeInclusive编译不通过
fn main() {
for k in (1..=10).zip(1..=20).rev() {
println!("{} {}", k.0, k.1);
}
}
提示:
error[E0277]: the trait bound
RangeInclusive<i32>: ExactSizeIterator
is not satisfied
改成Range就正常:
// Range编译通过
fn main() {
for k in (1..11).zip(1..21).rev() {
println!("{} {}", k.0, k.1);
}
}
但是更奇怪的是,如果我不进行zip操作,那么无论是RangeInclusive还是Range都能编译通过。
造成这样的差异(ExactSizeIterator is not satisfied)的原因是什么?
rev 需要参数是 DoubleEndedIterator 。
而 zip 的结果 Zip<A,B> ,需要 A, B 均是 ExactSizeIterator 才会实现 DoubleEndedIterator: Zip<A,B>。因为只有两个 iterator 的长度都已知,才能确定 zip 后 iterator 的终点。
但是,RangeInclusive 只对 i8, u8, i16, u16 实现了 ExactSizeIterator 。原因是,ExactSizeIterator 有一个成员叫 len() ,返回长度。而对 u32 以上,其值会超过 usize::MAX ,无法实现。source。所以 RangeInclusive<i32> 在 zip 过之后,结果没有实现 DoubleEndedIterator ,就不能调用 rev 了。
由于 rev 本身不需要 ExactSizeIterator ,只需要 DoubleEndedIterator 就可以调用,而 RangeInclusive 实现了 DoubleEndedIterator ,所以 RangedInclusive 自己是可以调用 rev 的。
问题内容: 我想知道以下代码的行为背后的机制是什么: 我的理解是不 返回 函数,而是 关闭连接/结束请求 。这可以解释为什么我仍然可以在命令后执行代码(我查看了快速源,但它似乎不是异步函数)。 还有其他我可能会想念的东西吗? 问题答案: 当然可以结束HTTP响应,但是它对您的代码没有做任何特殊的事情。 即使您已结束回复,也可以继续做其他事情。 但是,您 无法 做的是利用进行任何有用的操作。由于响应
问题内容: 我正在阅读Angular JS文档。我无法弄清楚我在以下代码中提到的一行。谁能解释? script.js : index.html : 我不明白这一点: 在这里,为什么要使用两个s。 问题答案: Angular JS-内联数组注释 它用于避免缩小问题。缩小后,代码如下: 因此,Angular知道要注入哪些依赖项。 否则看起来像 最小化和角度之后,不知道哪个依赖是什么意思。 您可以在An
我想了两个小时,为什么这段代码不能产生预期的结果。如果我输入3个整数,比如3、4和5,它应该给出所有27个可能的和(假设数字可以是正的、负的或零) 因此,它应该产生以下内容: -3-4-5=-12 -3-4 0 = -7 -4-4 5=3 等等
在《计算机系统程序员的观点》(2.3.5)一书中,计算二的补码乘法的方法描述如下: C中的有符号乘法通常是通过将2w位乘积截断为w位来执行的。将二补码数截断为w位相当于首先计算其取模2w的值,然后从无符号转换为二补码。 因此,对于相似的位级操作数,为什么无符号乘法不同于二的补乘法?为什么两个补乘法需要进行符号扩展? 为了计算无符号和二补加法的相同位级表示,我们可以转换二补的参数,然后执行无符号加法
据我所知,引用/指针别名会妨碍编译器生成优化代码的能力,因为它们必须确保在两个引用/指针确实别名的情况下生成的二进制文件行为正确。例如,在下面的C代码中, 当使用标志的编译时,它发出 在这里,代码以和别名的大小写两次存储回。 当我们显式地告诉编译器这两个指针不能用关键字别名时: 由于Rust确保(除了在不安全的代码中)两个可变引用不能别名,我认为编译器应该能够发出更优化的代码版本。 当我使用下面的
问题内容: 我担心给出的文件和目录的顺序。如果我有这些目录,,,,,,,,,,,,,什么是输出列表的顺序? 它是按数值排序的吗? 或按ASCII值排序,如? 此外,如何获得特定的排序? 问题答案: 用途。这是的文档字符串: listdir(路径)-> list_of_strings 返回一个列表,其中包含目录中条目的名称。 该列表按任意顺序排列 。它不包括特殊条目“。” 和“ ..”,即使它们存在