Lobsters | 📄 原文链接 | 2026-07-22 collected

关于整数类型的思考:为什么 Rust 的做法更好

source: blog.xoria.org — 2026-07-21

概述

作者系统梳理了 C、C#、Go、Swift 和 Rust 五种语言中整数类型的设计哲学。传统语言倾向于设置默认 int 类型(通常是 32 位有符号),这鼓励开发者不假思索地使用它。Rust 则消除了这种偏见:所有整数类型都有显式的位宽和符号前缀(i/u),迫使开发者在每次使用时认真考虑最适合的类型。作者进一步论证,在实际 Rust 编程中,无符号整数(尤其是 usize)比有符号整数使用频率更高,甚至提议将无符号作为默认。

核心要点

  • Rust 通过 显式的位宽和符号前缀(i8/i32/u64 等)消除了对默认 int 类型的偏见,迫使开发者思考最佳类型。
  • 传统语言如 C# 和 Go 的 默认 int 鼓励不假思索地使用有符号 32 位整数,忽略了更适合场景的无符号或精确宽度类型。
  • Rust 用 usize 替代 size_t 作为下标和大小类型,无隐式转换,保证了数组索引永远不会是负数且可超过 20 亿。
  • 在作者的实际 Rust 经验中,无符号整数使用频率远高于有符号整数——不可表示的值(负数索引)在设计层面就被排除了。

金句

Rust eliminates each of these points: all integer types have an explicit size, and all types are prefixed with either i or u for signed and unsigned respectively. There is no bias towards a certain size or signedness.
back to Lobsters