Rust - Hello, world!

 クラウディア
1. 概要
2. パッケージ作成
3. ビルド・実行
4. ソース

1. 概要

 なにはともあれ、「Hello, world!」。  ここでは、「プログラミング言語「Rust」とは? "Hello, World!"で基本を押さえる:基本からしっかり学ぶ Rust 入門」に紹介されているまま、やってみます。

2. パッケージ作成

 適切な、作業ディレクトリを作成し、そこをカレントディレクトリとしておいて。

cargo new --bin hello_world

Created binary (application) `hello_world` package
 ちゅなことを言われまして。  カレントディレクトリに、下記のディレクトリ・ファイルが作成されました。

hello_world
|-- Cargo.toml
`-- src
    `-- main.rs

3. ビルド・実行

 ここも、参考サイトのいうがまま。

cd hello_world
cargo run
 コンパイルと実行が、同時に動くようです。

   Compiling hello_world v0.1.0 (/パス/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 16.61s
     Running `target/debug/hello_world`
Hello, world!
 この時点で、ディレクトリ内は、下記のようになっております。

hello_world
|-- Cargo.lock
|-- Cargo.toml
|-- src
|   `-- main.rs
`-- target
    |-- CACHEDIR.TAG
    `-- debug
        |-- build
        |-- deps
        |   |-- hello_world-7bfb95fddec9c2f8
        |   `-- hello_world-7bfb95fddec9c2f8.d
        |-- examples
        |-- hello_world
        |-- hello_world.d
        `-- incremental
            `-- hello_world-xi5wb5f4hc0j
                |-- s-gbyyqn2xyb-1g4i9iy-3uq7ikb1po8yg
                |   |-- 1d7hbqnt5t89r8o9.o
                |   |-- 1u6usfkoryhlwuto.o
                |   |-- 24td2griif9mg94m.o
                |   |-- 2zm0vfiwz1rxssvj.o
                |   |-- 3kwbhxw55uzxgwid.o
                |   |-- 3tl4prjstlgc7qgy.o
                |   |-- 3vgotgn4mqyoh6am.o
                |   |-- dep-graph.bin
                |   |-- query-cache.bin
                |   |-- r93ifovkcrlnny5.o
                |   `-- work-products.bin
                `-- s-gbyyqn2xyb-1g4i9iy.lock
 ロードモジュールは

hello_world/target/debug/hello_world
 で、これは、単体で実行可能なロードモジュールになっていますので、単にロードモジュールを起動することで実行もできます。

$ hello_world/target/debug/hello_world
Hello, world!
 上記では、ビルドと実行を一気に行ったのですが、それぞれ別途行うこともできるようです。

$ cargo build
   Compiling postgres v0.1.0 (/パス/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 20.15s
$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.08s
     Running `target/debug/hello_world`
Hello, world!
 てな感じ。  デフォルトでは、デバッグモードでビルドするようです。

4. ソース

 ソースは、パッケージ作成の段階でできた

hello_world/src/main.rs
 ちゅうのは、アホでもわかりますわな。  覗いてみますと

fn main() {
    println!("Hello, world!");
}
 「C++」の後継というだけあって、「C++」をある程度理解していれば、「println」の後ろの「!」は、気になりますが、その他は、ほとんど納得できます。  下記のコマンドで、「Hello, world!"」を出力するプログラムが作成されたので

cargo new --bin hello_world
 いささか驚いたのですが。  「cargo new --bin」の後ろにいれた文言は、今んとこ理解している限りでは、作成するディレクトリ名に影響するだけで。  「main.rs」のソース内容は、「cargo new --bin」の後ろに何をいれても、今んとこ同じなので、そこまで驚くことでもなかったようです。  ちなみに、上記のソース、わたしは

fn main()
{
    println!("Hello, world!");
}
 と書きたくなります。  いまやっている、「C」系のプロジェクトのルールでは「{}」は、改行して、同じカラム位置に書くことになっておりますでな。  しかし、「Rust」の推奨では「{」の部分は、前行の末尾にスペースをひとつあけて書くものらしい。  おそらくは、ロードモジュールには、なんら影響はないかとは思います。  要は、ソースの可読性に対する思惑の違いとか、慣れの問題かとは思いますが、わたしは、改行する癖がありますので、以降のソースでも改行しちゃうと思いますが、悪しからず。
earthcar(アースカー)