かまやまの勉強ノート

ど初心者がプログラミングとか初歩的なところからの勉強記録。

憧れのRust ~4.基本的な文法編 ~

かまやまです。
遅れました。毎日雨ですね。
相変わらずの3日ぼうずですが復帰できました。

 

さて、前回Hello worldがやっとできました!
今回は基本的な文法を学んでいきたいと思います٩( ᐛ )و

 

基本的な文法を学ぶ会

 

どこからやろうかな。
まずは前回のHello worldのソースから見ていきましょうか。
こちらのサイトでもHello worldのソース解説があったのでおさらいです。

Hello, World! - The Rust Programming Language

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

 

main()はjavaとかにあるあれですね。

常に全ての実行可能なRustプログラムで走る最初のコードになります。

ですです。実行した際にデフォルトで呼ばれるあれです。

 

printlnは標準出力のようですね。

println!はRustのマクロを呼び出すということです。代わりに関数を呼んでいたら、 println(!なし)と入力されているでしょう。

printlnは関数でprintln!はマクロになるそうです。
関数はわかるのですがマクロ.....?

 

マクロといえば
c言語とかだとdefineで定義されるやつのイメージです。
文字列を定義したものに置き換えるといった処理を想像します。
コンパイルするときもマクロはなんだか順番が違った気がしています。
(c言語を書いたのが何年も前であんまり覚えてないです...)

参考: C言語のマクロの基本

 

Rustでも同じようにマクロの機構があるのですね。
私のレベルがとてつもなく低いので、全く理解できていないのですが、
もう少しレベルが高くなったら理解への挑戦をしていきたいです!

参考: 

qiita.com

 

Hello worldで最初からマクロが出てきて、心が折れそう(°▽°)

ですが基本的構文やっていきたいと思います(°▽°)

 

精神状態を安定させるために、足し算でもしましょう。
式 - Rust By Example 日本語版 この辺りを参考に

test.rs

    fn main() {
        let x = 1;
        let y = 2;
        println!(x + y);
    }

こんな感じかな?

    $ rustc test.rs
    error: format argument must be a string literal
    --> test.rs:4:14
    |
    4 |     println!(x + y);
    |              ^^^^^
    |
    help: you might be missing a string literal to format with
    |
    4 |     println!("{}", x + y);
    |              ^^^^^
    
    error: aborting due to previous error

 

エラーです(°▽°)

plintlnは文字列を引数にしなければならないのと

    println!("{}", x + y);

この書き方はなんでしょう...?

ググってみるとありがたい記事発見(°▽°人)

qiita.com

ありがとうございます。

 

この記事を読んだあとに改めて見てみると

{}がプレースホルダでここにフォーマットの指定を書いて、
第2引数がそのフォーマットに従って出力されるのですね。
c言語とかで%sとかで書くやつと同じですね。

 

修正して以下のソースコードにします。

    fn main() {
        let x = 1;
        let y = 2;
        println!("{}",x + y);
    }

コンパイルして実行!

    $ ./test
    3

できました!
足し算だけだけど嬉しい!

 

ここ数年触っている言語がスクリプト言語なので
コンパイル周りがまっったくわかっていないので、
そこも含め少しずつ理解できたらと思います(°▽°)

 

少ししか進められなかったのですが、次回も基本的な文法をやっていきたいです。

憧れのRust ~3.続Hello World編 ~

かまやまです。

頭が痛いです。

昨日、更新できずにすみません....

 

12時間遅れですが、

前回Hello worldに失敗したので、諦めずに頑張ります٩( ᐛ )و

 

リベンジ!Hello world

 

さて前回のエラーの復習です。

hello_world.rs

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

こんなファイルを作って

    $ rustc hello_world.rs

ってやったら

error: linking with `cc` failed: exit code: 1
・・・

 

とエラーが出ました。
ぐぐると何やらxcodeのエラーらしい。

 

と、ここまでが前回でした。

 

xcodeと言ってもこのMacに変えてからxcodeを入れた覚えがありません←

vscodeは入っているんですけどね...

 

ということで突然ですが、xcodeを入れていきます。

f:id:y-kmym:20200616211842p:plain

APPストアみるとやっぱり入れてなかったみたいです。

びっくり。

 

めちゃめちゃ時間がかかるのでしばらく待機です。

お茶でもして待ちましょう。

 

ダウンロードして一度アプリを立ち上げてインストール...
全部で一時間くらいでした。

さて、いけるかな

error: linking with `cc` failed: exit code: 1

(°▽°)

 

ダメです。

むむむ

xcodeのエラーの人とよくよくみるとエラーが違うようです。

= note: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
error: aborting due to previous error

 

xcrunがないようです。

調べるとmacのOSアップデート後とかによく出るやるみたいですね。


    $ xcode-select --install

 

でインストールすると良いみたいです。

 

これで行けそうです!

 

コンパイルしてみると...

 

行けました(°▽°)

 

    $ ./hello_world
    Hello, world!

 

できました!!

よかったーーー!

 

今日はここまでです。

次はif文とか基本的な構文をやっていければと思います。

憧れのRust ~2.Hello World編 ~

かまやまです。
3日坊主にならないためにも更新は毎日21時にしましょうか。

 

・・・多分明日からできてないです。

頑張ります。

 

前回、インストールができたので、

Hello worldをやっていきます٩( ᐛ )و

 

さあみんなでHello World

 

rustは公式のチュートリアルのドキュメントがありました!(日本語!嬉しい!)

https://doc.rust-jp.rs/book/second-edition/ch01-02-hello-world.html
前回のこともここに記載されていました。
おおよそ合っていたのでよかったです!

 

まずはプロジェクトを作っていきます。

$ mkdir kmym_project

$ cd kmym_project

$ mkdir hello_world 

$ cd hello_world

 

ファイルを作ります。
.rsがrustのファイルの拡張子だそうです。
二単語以上はアンダーバーでつなぐそうです。

 

hello_world.rs

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

こんな感じでしょうか。

さて、コンパイルしていきます!

$ rustc hello_world.rs

 

error: linking with `cc` failed: exit code: 1

 

・・・・(°▽°)

めっちゃエラー出てきました。

 

このエラーでぐぐると、Xcodeのライセンスの問題だそうです。

むむむ...
今日は疲れたのでここまでにします...

憧れのRust ~1.インストール編 ~

かまやまです。

Rustという言語に憧れています。

なんだかイケている言語らしいのでインストールから始めてみます٩( ᐛ )و

インストール

はい。やっていきます。

基本的にはこの公式ページに従ってインストールをすれば良いみたいです。
https://www.rust-lang.org/tools/install

* 環境

mac catalina

 

まずrecommendedされているコマンドを叩いてみる


$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

 

なんだか説明が色々書かれていて

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

で止まる。

デフォルトの1を撰択する。

 

Rust is installed now. Great!

 

あれ?終わり?

すぐ終わった。めっちゃ早い。

 

最後にパスを通してねって書いてある。(英語読めないので雰囲気です。)

$HOME/.cargo/envを覗くと

export PATH="$HOME/.cargo/bin:$PATH"

と書いてあるのでこれを通すみたい。

 

$ cat $HOME/.cargo/env >> .zprofile

※カッコよくechoをかけません...

$ source .zprofile

これでできたかな?

あとで見たところ.zprofileに二重に書かれていたのでインストールでもしかしたら自動で通してくれてたみたいです....(確認不足)

 

気を取り直して

バージョン確認が最後に書いてある(ような気がする)のでそれを打ってみる。

$ rustc --version
rustc 1.44.0 (49cae5576 2020-06-01) 

 

インストールできているみたい٩( ᐛ )و


次回はHello worldやっていきますー

ご挨拶

1日坊主のかまやまです。
勉強したいなと思ってこのブログを作ったのですが一向に更新できていないです。

 

またボチボチ書き始めたいと思います。
チラ裏レベルの勉強ノートですが、

どこかの誰かのためになればと思います。