3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rust - プレースホルダーについて

Last updated at Posted at 2022-01-27

はじめに

この記事は、私が Rust の学習時に書いた備忘録となります。間違い等があればコメント等で教えていただけると助かります。

プレースホルダーとは

Rust において、println!, eprintln!, format! 等のマクロに文字を埋め込むには、波括弧 {} を使用する。これがプレースホルダーとなる。

fn main() {
    println!("あ{}う{}お", "い", "え"); // あいうえお
    println!("1 {} 3 {} 5", 2, 4); // 1 2 3 4 5
}

引数の順序指定

プレースホルダー内に添字を指定すれば並びを変えることができる。また、同じ引数を複数回使用することも可能。

println!("A{1}C{0}", "D", "B"); // ABCD
println!("贵樣{1}{1}{1}{1}{1}{0}", "!", "ァ"); // 贵樣ァァァァァ!

名前指定

引数に名前を付けると、可読性を向上させることができる。プレースホルダー内に指定した名前を指定すればよい。

println!(
    "い{ro}は{ni}ほ{he}と",
    ni="に",
    he="へ",
    ro="ろ"
); // いろはにほへと

n進数や指数表記にフォーマット

数値を他の形式にフォーマットすることも可能。

let int = 14;
println!("bin(2進数): {x:b}" ,x=int);
println!("oct(8進数): {x:o}" ,x=int);
println!("hex(16進数): {x:x}" ,x=int);
println!("exp(指数表記): {x:e}" ,x=int);
println!("HEX(大文字16進数): {x:X}" ,x=int);
println!("EXP(大文字指数表記): {x:E}" ,x=int);
println!("#を付けると整形: {x:#x}" ,x=int);

出力結果は以下の通り:

bin(2進数): 1110
oct(8進数): 16
hex(16進数): e
exp(指数表記): 1.4e1
HEX(大文字16進数): E
EXP(大文字指数表記): 1.4E1
#を付けると整形: 0xe

桁操作

  • x:<n: x の値を左寄せに配置して n 桁になる様に後ろに半角空白が入る。
  • x:>n: x の値を右寄せに配置して n 桁になる様に前に半角空白が入る。
  • x:^n: x の値を中央寄せに配置して n 桁になる様に両端に半角空白が入る。ただし、奇数桁の場合は後ろの半角空白が1つ多くなる。

n の部分に直接数値を書かない場合は n$ の様に記載する。

また、x:0n の様にすれば0で埋めることができる。もちろん0以外の文字も使用可能。

let x = 1000;
println!("{:<6}('ω' )", x); // 1000  ('ω' )
println!("( 'ω'){:>n$}", x, n=6); // ( 'ω')  1000
println!("( 'ω'){:^6}('ω' )", x); // ( 'ω') 1000 ('ω' )
println!("( 'ω'){:^7}('ω' )", x); // ( 'ω') 1000  ('ω' )
println!("{:06}", 1); // 000001
println!("{:优^10}", x); // 优优优1000优优优

小数の桁操作

x:.n で x を小数第 n 位まで表示することができる。

println!("{:.5}", 0.01); // 0.01000
println!("{:.1$}", 0.01, 5); // 0.01000
println!("{:.3}", 0.0001); // 0.000

その他詳しい内容については標準ライブラリの fmt モジュールのドキュメントを参照されたし。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?