スキップしてメイン コンテンツに移動

Gentoo LinuxでRust言語に入門:環境構築からHello Worldまで


Rust言語の学習を始めるにあたり、Gentoo Linux環境での環境構築から、最初のプログラム「Hello World」のビルドと実行までの基本的な手順をまとめました。

Rustの開発では、コンパイラ(rustc)に加えて、ビルドシステム兼パッケージマネージャである cargo を使用するのが標準的です。

ソースからビルドする場合(※時間がかかります):

Bash
sudo emerge -av dev-lang/rust
バイナリ版をインストールする場合(おすすめ):

Bash
sudo emerge -av dev-lang/rust-bin
※ 頻繁なバージョン切り替えや、複数ターゲットのクロスコンパイル環境を構成したい場合は、代わりに dev-util/rustup をemergeし、一般ユーザー権限で rustup-init を実行する構成も一般的です。

適当な作業ディレクトリで以下のコマンドを実行します。

Bash
cargo new hello_world
cd hello_world
これにより hello_world というディレクトリが作成され、同時にGitリポジトリの初期化と、パッケージ設定ファイル(Cargo.toml)が自動生成されます。

Rust
fn main() {
    println!("Hello, world!");
}
  • fn main(): プログラムの実行開始地点(エントリーポイント)です。

  • println!: 標準出力に文字列を表示します。関数名の末尾にある ! は、これが通常の関数ではなく「マクロ」であることを示しています。

Bash
cargo run
実行結果として画面に Hello, world! と表示されれば成功です。

なお、実行はせずにコンパイルのみを行いたい場合は cargo build を使用します。生成されたバイナリファイルは target/debug/hello_world に出力されます。

これでRust開発の第一歩を踏み出せました。Gentoo環境でも、Cargoのおかげで非常にスムーズにプロジェクトの管理やビルドが行えます。

コメント

このブログの人気の投稿

Rustで変数の型を明示的に指定する方法

Rustでは、変数名の後ろに : 型名 を付与することで、すべての変数の型を明示的に指定できます。 Rust // C言語: uint32_t count = 0; let count: u32 = 0 ; // C言語: int32_t offset = -10; let offset: i32 = - 10 ; Rustはデフォルトで変数が「変更不可(イミュータブル)」となるため、後から値を変更(再代入)したい場合は mut キーワードを付けます。 Rust // C言語: size_t index = 0; let mut index: usize = 0 ; index = 1 ; // mutがあるので変更可能 主なプリミティブ型とC言語の対応 ハードウェアに近い制御や厳密なデータ管理が求められる場面では、ビット幅を明示した型指定が多用されます。 u8 , u16 , u32 , u64 : 符号なし整数( uint8_t 等に相当) i8 , i16 , i32 , i64 : 符号付き整数( int8_t 等に相当) usize : メモリアドレスのサイズ(ポインタ長)に依存する符号なし整数( size_t に相当) isize : ポインタ長に依存する符号付き整数( ptrdiff_t に相当) f32 , f64 : 浮動小数点数( float , double に相当) 型の明示が「必須」となる場面 関数内のローカル変数は型を省略(推論)することが許可されていますが、 関数のインターフェース(引数と戻り値) および 定数 については、言語仕様として型の明示が強制されます。 Rust // 引数 (a, b) と戻り値 (-> u32) は型の明示が必須 fn calculate_offset (base: u32 , offset: u32 ) -> u32 { base + offset } // 定数 (const / static) も型の明示が必須 const BASE_ADDRESS: u32 = 0xA0000 ; すべてのローカル変数に型を明示する方針でコードを書けば、LSPの支援がないプレーンなVim上でも、C言語と同等の厳密な可読性を維持したまま開発を進め...