見出し画像

RustでHello, Worldしました

Rustをインストールすることはできた。じゃあ、次は何をするか?「とりあえずHello, World」ですな。

$ rustc --version
rustc 1.68.0 (2c8cc3432 2023-03-06)

$ cargo new hello
     Created binary (application) `hello` package

あまりにも、あまりにもあっさりできてしまった。何ができたのだろうか?

cargo new helloで作成されたファイル

src/main.rsがプログラムを書くところかな。gitの追跡対象外を指定する.gitignoreもある。わからないのはCargo.tomlで、Cargo.lockはnpmのpackage-lock.json的なものと推測する。

Cargo.toml

[package]
name = "hello"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

package.editionがRustのバージョンを表すのだろう。dependenciesには依存パッケージを記述するのだろう。npmのpackage.jsonのようだ。

src/main.rs

fn main() {
    println!("Hello, world!");
}

関数には fn を使うのか。println!のように名前に!が付くのは、関数ではなく「マクロ」なんだそうだ。

.gitignore

/target

targetディレクトリはまだないけど、ローカルで個別にできる成果物が収められるのだろう。

さて、ソースコードやCargo.tomlファイルのいずれも変更していないが、このまま実行できる。helloディレクトリ上で次のコマンドを実行する。

$ cd hello

$ cargo run
   Compiling hello v0.1.0 (C:\XXX\hello)
    Finished dev [unoptimized + debuginfo] target(s) in 1.23s
     Running `target\debug\hello.exe`
Hello, world!

え?exeファイルができてるの?すご!

cargo runでtargetディレクトリがてんこ盛り

このexeファイルはもう単独で動かせるのか?

$ target/debug/hello
Hello, world!

動くよ!当たり前か。でも、すごいね。cargo cleanすれば、target以下を削除できる。

まとめ

ボイラープレートとか、パッケージ管理とか、C/C++開発者にとっては無縁のものだと思っていた。Visual Studioを使っていれば、そんなこともやってくれるのだろうけど(想像)、貧乏プログラマ、Community版を使いつつ、VSCodeでコツコツ開発している私にとっては、コマンドライン/シェルだけでここまでできるRust、凄すぎる。

exeやdllができるのであれば、Notes/Domino C APIで開発している私にはある野望がムクムクと頭をもたげてくる。新しいこと、やってみたいことがあるのは、わくわくする。

この記事が気に入ったらサポートをしてみませんか?