相关疑难解决方法(0)

如何在范围中包含最终值?

我想创建一个带有'a'..'z'值(包括)的向量.

这不编译:

let vec: Vec<char> = ('a'..'z'+1).collect();
Run Code Online (Sandbox Code Playgroud)

什么是惯用的方式'a'..'z'

rust

9
推荐指数
2
解决办法
2700
查看次数

范围文字和范围模式(例如,`...` 和`..=` 之间)有什么区别?

Rust Book的Operators and Symbols附录列出了两个都是右包含范围的运算符:

操作员 例子 解释
..= ..=expr, expr..=expr 包含右侧的范围字面量
... expr...expr 在模式中:包含范围模式

这两个运营商有什么区别?或者,换种说法,范围文字和范围模式之间有什么区别?

'In a pattern' 表示expr...expr必须在匹配表达式中使用,expr..=expr而不应该使用。为什么是这样?

rust

7
推荐指数
1
解决办法
131
查看次数

如何迭代所有字节值(`0..256`中的overflowing_literals)

我正在尝试迭代所有可能的byte(u8)值.不幸的是在我的范围内的文字0..256被强制转换为u8256溢出:

fn foo(byte: u8) {
    println!("{}", byte);
}

fn main() {
    for byte in 0..256 {
        foo(byte);
        println!("Never executed.");
    }
    for byte in 0..1 {
        foo(byte);
        println!("Executed once.");
    }
}
Run Code Online (Sandbox Code Playgroud)

以上编译:

warning: literal out of range for u8
 --> src/main.rs:6:20
  |
6 |     for byte in 0..256 {
  |                    ^^^
  |
  = note: #[warn(overflowing_literals)] on by default
Run Code Online (Sandbox Code Playgroud)

第一个循环体永远不会被执行.

由于演员阵容,我的解决方法非常难看并且感觉很脆弱:

for short in 0..256 {
    let _explicit_type: u16 = short;
    foo(short as u8); …
Run Code Online (Sandbox Code Playgroud)

rust

4
推荐指数
2
解决办法
729
查看次数

标签 统计

rust ×3