憧れの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でも同じようにマクロの機構があるのですね。
私のレベルがとてつもなく低いので、全く理解できていないのですが、
もう少しレベルが高くなったら理解への挑戦をしていきたいです!
参考:
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);
この書き方はなんでしょう...?
ググってみるとありがたい記事発見(°▽°人)
ありがとうございます。
この記事を読んだあとに改めて見てみると
{}がプレースホルダでここにフォーマットの指定を書いて、
第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を入れていきます。
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日坊主のかまやまです。
勉強したいなと思ってこのブログを作ったのですが一向に更新できていないです。
またボチボチ書き始めたいと思います。
チラ裏レベルの勉強ノートですが、
どこかの誰かのためになればと思います。