Rust リテラルとオペレータとは 使い方と注意点について
リテラル
リテラルは、ソースコードに直接記述された固定値を指します。
Rustでは、数値、文字、文字列、ブール値、および複合データ型(タプルや配列など)に対応するリテラルが用意されています。
数値リテラル
整数リテラルはデフォルトでi32型、浮動小数点数はf64型です。
57u8、3.14f32などのように型サフィックスを使用して、異なる数値型を指定することもできます。
また数値リテラルには、二進数(0b)、八進数(0o)、十六進数(0x)、バイト(b'A')も含まれます。
let dec = 98_222;
let hex = 0xff;
let oct = 0o77;
let bin = 0b1111_0000;
let byte = b'A';
文字列と文字リテラル
文字列リテラルはダブルクォート("hello")、文字リテラルはシングルクォート('a')で囲みます。文字列は&str型のスライスを表し、UTF-8でエンコードされたテキストを保持します。
let s = "Hello, world!";
let c = 'z';
let heart_eyed_cat = '😻';
オペレータ
Rustのオペレータには算術、比較、論理、ビット演算、型キャストなどがあります。
算術オペレータ:加算(+)、減算(-)、乗算(*)、除算(/)、剰余(%)
比較オペレータ:等しい(==)、等しくない(!=)、小さい(<)、大きい(>)、以下(<=)、以上(>=)
論理オペレータ:論理AND(&&)、論理OR(||)、論理否定(!)
ビット演算オペレータ:ビットAND(&)、ビットOR(|)、ビットXOR(^)、ビットNOT(~)、左シフト(<<)、右シフト(>>)
Rustの案件を探すならクラウドワークス テック
注意点
整数オーバーフロー
Rustではデフォルトでデバッグビルド時に整数オーバーフローをチェックすることにより、オーバーフローが発生した場合にパニックが発生します。
リリースビルドでは、オーバーフローはチェックされず、ラップアラウンドが発生する可能性があります。
型の互換性
異なる型の値に対するオペレータの使用には注意が必要です。
例えば、整数型と浮動小数点型の値を直接比較や算術演算で混在させることはできません。必要に応じて明示的な型変換が必要になります。
文字列操作
文字列の連結や操作にはメモリ割り当てが伴います。
大量の文字列操作を行う場合は、パフォーマンスに影響を与える可能性があるため、効率的な方法を選択することが重要です(例えば、Stringのpush_strメソッドやformat!マクロの使用)。
Rustをもっと詳しくなりたい方に
Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
個人的には他の言語開発もそれなりにあったことからこの本を読むことでかなりRustへの理解が深まりました。
プログラムやシステム的な専門用語は当たり前に登場するものの、他の言語での開発経験がある方なら問題ないでしょう。むしろその経験があることで、多言語との比較をしながら読み進めることができます。
内容的には大容量かつ丁寧すぎるほど嚙み砕いて説明がされているため、情報量は十分といえます。Rust自体学習コストが高く、難易度の高い言語のためこのくらいが妥当といえます。
プログラミング初心者レベルの方には難しい内容となっていますが、Rustの概念を理解し、基礎を把握することができる本であること間違いなしです。
Rust学習のために筆者が実際に読んでおすすめしたい本をまとめています。
基礎から学ぶRustプログラミング入門
本コースではRustについて全く経験がない方でもスムーズに学習を進められるようにとなっています。
基本的にはコードベースで解説を行い、抽象度が高く難しい内容に関しては適宜スライドも使いながら丁寧に解説します。そしてただ文法を学ぶだけではなく、最終的には演習としてCLIアプリケーションを作成し学習内容の定着を図ります。
以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。