見出し画像

Rust学習 - ブロックチェーンを作りながら基本を学ぶ#1

今日も学習していく。基本を学んでる間、猫さんの画像でいきましょう。にゃーんってやつです。黙々と頑張る。


このマガジンの構成は「本題」「本題+α」の2段構成で進めます。

本題は今日の頑張り、そして、本題+αが命綱。しばらくはこの構成でいく

※一言でまとめると、「基本構文についてわからないことがたくさん出てきた。もう少し学習が必要」という内容。

本題


さぁ、やっていこう。とりあえずRustインストール
インストールは Get Startedを参照。

https://www.rust-lang.org/ja/learn/get-started

git clone git@github.com:Eigo-Mt-Fuji/blockchain-rust.git

Javaと比較してRust構文を紹介してくれる。英語やん。しんどい助かる。

実際に書いていく。この流れで開発環境を整えます。
Rust向けのVSCode Extension。「rust-analyzer」だけ導入。

コード補完、型補完、型識別子などの定義ジャンプ、シンタックスハイライトに頼る。よろしくおねがいします。

Visual Studio Codeのこと、ヴィスコって呼ぶというのはホント?強いエンジニアはそう呼ぶって聞く。


基本を理解していく。
「関数」「構造体」「プリミティブ型」、「予約語」の確認
日本語の公式リファレンスに関連付けながら、丁寧に見ていく。

関数

構造体

  • struct

    • 構造体

      • Rustでは構造体=structは、カスタム型という分類の中に属するらしい

      • 構造体定義にも種類がある。3種類。

        • タプル、クラシック、ユニット

          • クラシックがいわゆるC言語とかの構造体と同じ。基本はコレ

          • 「タプル」もC++やPythonなどでもおなじみの、いくつかの属性の組。Rustではタプルをstructキーワードで表現する仕様。タプル化したときは個別の属性には名前がつかない。組となるそれぞれの属性が構造体の名前から十分自明である場合はつかってよさそう

          • ユニットはなぞ。属性を全く持たない構造体。ジェネリック型を扱う場合に有効らしい。今後調査。

        • このサイトで構造体型の説明が確認できる

プリミティブ型(基本データ型)

今日主に扱ったのは2つ。

let myStr = String::from("hello"); 
let someSliceOfMyStr = &myStr[0..2];
  • わからないことがたくさん出てきた。履修が必要。

    • 借用とは?

    • 参照とは?参照ではないとすると何?

    • スライスとは?

    • 文字列スライスが言語の核とのことだが、一方で標準ライブラリの「String型」の一部を指すというのはどういうこと?

      • どっちが先?

    • そもそも単に文字列ではなく、「文字列スライス」という表現で定義づけた理由は?

予約語

https://doc.rust-jp.rs/book-ja/appendix-01-keywords.html

今日使ったのはこちら

  • pub

    • 公開性

      • 構造体フィールド、implブロック、モジュールで公開性について言及

      • privateとかはない。pubをつけなければ非公開扱いになる模様

  • struct

    • 構造体

  • impl

    • 関係関数、メソッド

  • fn

    • 関数

  • for

    • impl Xxx for Yyy

    • forは、イテレータを使用した繰り返し処理の構文でも使う

    • 「高階ライフタイム」という見慣れないワード

      • ライフタイムはRustのコンパイラが借用に問題が無いことを確認するための仕組み。変数が生成されてから破棄されるまでがライフタイム。スコープとは違うので注意。おそらく変数が破棄されるまでには、借用の概念も含めて考えると必ずしも1つの変数のスコープがライフタイムと一致するとは限らないのだと理解した

本題+α

今日は、何作ろうか考えていました。並行して考えているテーマです。

ここではRust学習をしていく心つもりなので、「自分は、どんなRust学習をしていけば、幸せになれるだろうか」と考えました。

結論だけ書きますが、
↓ように考え、そのように学習を仕向けて行こうと思います。

  1. とりあえず基本は大事やろ。文法基礎。

  2. 実践という点では、WebのAPI開発と、WebAssemblyのビルドができればよいと思う。

  3. 既出のエコシステムの動向に追いつかねば。つまり、技術スタック、ライブラリの使い方、開発環境は調査して実践しなければわからない。

  4. ちなみに、今は情報系の学生はRustを学んで卒業してくるらしい。大学のシラバスを参考に学ぶべし。

    • https://ytakano.hatenablog.com/entry/2020/12/23/204528


いずれにしても、とりあえず基本から、です。

焦らず、継続。またあした頑張ります!

では!

この記事が気に入ったらサポートをしてみませんか?