以下代码无法编译:
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 ×1