相关疑难解决方法(0)

为什么有符号整数的绝对值方法不返回无符号值?

以下代码无法编译:

fn main() {
    let x = (-5i32).abs();

    let z: u32 = x;
}
Run Code Online (Sandbox Code Playgroud)

随着消息:

error[E0308]: mismatched types
 --> src/main.rs:4:18
  |
4 |     let z: u32 = x;
  |                  ^ expected u32, found i32
Run Code Online (Sandbox Code Playgroud)

阅读文档,它看起来选择i32源于i32::min_value()没有积极表现的事实i32.然而,这有积极的表现u32,可以两次表示数字大.

我正在学习这门语言,并想了解为什么做出某些设计决定,以便养成良好的习惯.我觉得这个令人困惑.有人可以解释为什么它以这种方式工作而不是只返回一个u32,这似乎是语义上正确的类型?

rust

10
推荐指数
1
解决办法
356
查看次数

标签 统计

rust ×1