Rustを学ぶ

Rust

Substrateのチュートリアルを見ていてRustの理解が必要不可欠な気がしたのでRustを少し学ぶ事にしました。

教材は以下ページでやります。
プログラミング言語Rust

自分がよくわからなかった、または、新しく覚えるようなところだけ記載していきます。

Sponsored Link


Hello Worldの例

Hello Worldの出力させるのは基本ですよね。

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

2つ目の重要な部分は println!() の行です。これはRustのメタプログラミング機構、 マクロ の呼び出しです。 もし関数を呼び出しているのなら、 println() のようになります(! がありません)。 Rustのマクロについては、後の章で詳細に議論しますが、今のところ ! を見たら、普通の関数ではなくマクロを呼び出していることを意味する、ということだけ知っておいてください。

とページに記載があって、! を使っていたらマクロだとすると。

このマクロと関数の違いがまだよくわからないな。

CargoというRustのパッケージマネージャ

RustにはCargoというパッケージマネージャーがあって、javascriptでいうnpmみないなものです。

もしライブラリを作りたいなら、 lib.rs という名前にすることになります。 この規約はCargoでプロジェクトを正しくコンパイルするのに使われていますが、必要なら変更できます。

とのことで、lib.rsという名前が基本デフォルトだそうです。

設定ファイル作成

Cargo.toml という名前の設定ファイルを作成する。最初のCは必ず大文字でないとrustが認識しないです。

このファイルは TOML (Tom’s Obvious, Minimal Language ([訳注] Tomの理解しやすい、極小な言語) ) フォーマットで書かれます。 TOMLはINIに似ていますが、いくつかの素晴しい機能が追加されており、Cargoの設定フォーマットとして使われています。

参照ページでCargo使ってコンパイルしているのですが、それをやってみたところ以下のようなエラーが発生。

$ cargo build
error: failed to parse manifest at `/Users/shohu33/substrate/substrate-package/rust-tutorial/hello_world/Cargo.toml`

Caused by:
  no targets specified in the manifest
  either src/lib.rs, src/main.rs, a [lib] section, or [[bin]] section must be present

とおもったら、main.rs ではなく main.rc で作ってたのが原因でした汗。typoとは、、、

$ cargo build
   Compiling hello_world v0.0.1 (/Users/shohu33/substrate/substrate-package/rust-tutorial/hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 5.53s

無事コンパイルできました。
ちなみに cargo run とやると、コンパイルとプログラムの実行やってくれます。

$  cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.85s
     Running `target/debug/hello_world`
Hello, world!

リリースビルド

cargo build –release を使うことで、最適化をかけてプロジェクトをコンパイルできます。 最適化することで、Rustのコードは速くなりますが、コンパイル時間は長くなります。

cargo build –releaseをやると、Cargo.lockができると。
これでリリースビルドまで一通り覚えました。

次は、Rustプロジェクトを体験してみようと思います!

Sponsored Link
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


Rust
Rust 所有権

Rustに所有権という考え方があるのですがややこしいのでまとめておきました。 Rust所有権の説明ペ …

Rust
Rust 数当てゲーム

前回の続きから。 今回は数当てゲームを作成してみます。 プログラムは1から100の間のあるランダムな …

仮想通貨全般
Substrate Tutorial (#1 Basic – Creating a Module)

前回からの続きで引き続き、Substrate Tutorialを進めていきます。 Sponsored …