![見出し画像](https://assets.st-note.com/production/uploads/images/100625006/rectangle_large_type_2_fb8bcfc56528c7b0b84a57271eb43cf4.png?width=1200)
RustでHello, Worldしました
Rustをインストールすることはできた。じゃあ、次は何をするか?「とりあえずHello, World」ですな。
$ rustc --version
rustc 1.68.0 (2c8cc3432 2023-03-06)
$ cargo new hello
Created binary (application) `hello` package
あまりにも、あまりにもあっさりできてしまった。何ができたのだろうか?
![](https://assets.st-note.com/img/1679186306311-xr6diGUeON.png)
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ファイルができてるの?すご!
![](https://assets.st-note.com/img/1679187789220-sIZq4hAAGn.png)
このexeファイルはもう単独で動かせるのか?
$ target/debug/hello
Hello, world!
動くよ!当たり前か。でも、すごいね。cargo cleanすれば、target以下を削除できる。
まとめ
ボイラープレートとか、パッケージ管理とか、C/C++開発者にとっては無縁のものだと思っていた。Visual Studioを使っていれば、そんなこともやってくれるのだろうけど(想像)、貧乏プログラマ、Community版を使いつつ、VSCodeでコツコツ開発している私にとっては、コマンドライン/シェルだけでここまでできるRust、凄すぎる。
exeやdllができるのであれば、Notes/Domino C APIで開発している私にはある野望がムクムクと頭をもたげてくる。新しいこと、やってみたいことがあるのは、わくわくする。