rs.nkmk.me

Rustの数値リテラルでアンダースコアを桁区切りとして使う

Posted: | Tags: Rust, 数値

Rustでは、整数および浮動小数点数の数値リテラルの任意の位置にアンダースコア_を挿入できる。

公式の説明は以下。

変数名におけるアンダースコアについては以下の記事を参照。

数値リテラル内のアンダースコアの利用法

アンダースコアは可読性を上げるための桁区切りとして利用されることが多い。

let i = 100_000_000;
let i = 0b1000_0000;
let f = 0.123_456_789;

型指定のためのサフィックスを区切るために使われることもある。

let i = 100_i32;
let f = 0.123_f64;

アンダースコアを挿入できない場合

アンダースコアは連続していてもよいし、末尾にあってもよい。

let i = 10___0_______0___;
assert_eq!(i, 1000);

ただし、浮動小数点数の小数点の後ろには挿入できない。前はOK。

let f = 0_.123;
assert_eq!(f, 0.123);

また、先頭にアンダースコアを付けることもできない。この場合、変数として扱われる。

// let i = __100;
// error[E0425]: cannot find value `__100` in this scope

let __100 = "abc";
assert_eq!(__100, "abc");

なお、アンダースコアと数字だけの変数名は推奨されておらず、Clippyから警告される。

ちなみに、先頭にアンダースコアを付けた変数は、使用されない変数を表す。通常、定義されたあと一度も使われない変数があると、コンパイラにunused variableとして警告されるが、先頭にアンダースコアを付けると警告の対象外となる。

関連カテゴリー

関連記事