整数型の常識を覆す:Rust の設計が示す「符号なし整数」の意外な罠
Thoughts on Integers (2023)
この記事では、C、C#、Go、Swift など主要言語の整数型の現状を比較し、Rust の設計(明示的なサイズと符号、`usize` の強制など)がなぜ優れているかを論じます。しかし、C の符号付き整数オーバーフローが未定義動作(UB)である理由を掘り下げるうちに、著者は「符号付き整数をインデックスに使うべき」という Chandler Carruth や Bjarne Stroustrup の主張に直面し、自身の Rust での信念が揺らぎます。最終的には、アドレスサイズの整数をデフォルトとし、オーバーフローはラップさせるという、Odin 言語の設計に共感していきます。
「算術的に扱いたい整数があるなら、符号付きにしなさい。もっとビットが必要なら、ビットを増やせ。とにかく符号付きにしておけ」