やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Rust

Rustでコマンドライン引数を受け取る

コマンドラインツールを作るために。

Rustのテスト体系化

単体テストと結合テスト。

Rustのテスト実行

cargo testのコマンド引数。

Rustのテストコードを書く

assert_eq!マクロや#[should_panic]注釈など。

Rustのライフタイム6(ジェネリクス、トレイト境界とともに)

非常に見づらいコードになった。

Rustの静的ライフタイム5('static)

生存期間はプログラム終了まで。(他言語でいうグローバル変数)

Rustのライフタイム4(impl定義)

ライフタイム省略規則のときにサラッと流したので改めて。

Rustのライフタイム3(ライフタイム省略)

引数がひとつであり、その参照を返すとき、引数と戻り値のライフタイム注釈は省略できる。

Rustのライフタイム2(構造体の定義)

構造体のフィールドに参照をもたせる。

Rustのライフタイム1

Rustにおける難関のひとつらしい。

Rustのトレイト

C#やJavaでいうインタフェースに類似した機能。

Rustのジェネリクス

特定の型ではなく全ての型を示す方法。

Rustのエラー処理

panic!(), Result(Ok<T>,Err<E>)の2種類。</e></t>

Rustのコレクション(練習問題)

Vec, String, HashMap。

RustのコレクションHashMap型

使い方がややこしい。C#のほうが直感的。

RustのコレクションString型

文字列型はなんと6種類もある。

RustのコレクションVec型

Vector。可変配列。

Rustのインポートまとめ(Rust2018)

複雑すぎて理解不能なので簡単にまとめてみた。

Rustのmod参照方法(`mod 子モジュール名;`, `use 要素名;`, `extern crate クレート名;`, `super`)

この辺、細かい説明がなくてよくわからんかった。ので、使ってみた。

Rustのアクセス修飾子(pub)

pubを付与すると公開(public)される。pubがなければ非公開(private)。

Rustのモジュール(mod)

モジュールとは、関数、列挙、構造体などの定義をグルーピングする単位、だと思う。

Rustのcargoでライブラリ&テスト(単体、結合)

サクッとできてしまう。

Rustのプロジェクト構造

用語が多いので一旦まとめる。

RustのIfLet(matchの糖衣構文)

短く書ける。

Rustの列挙型に独自表示を実装する(E0277 対策 std::fmt::Display 実装)

#[derive(Debug)]と{:?}で楽していたところを自前で実装してみる。

NULL参照は10億ドルの失敗だった

NULLのせいで数々のバグが生まれ膨大な損失を被った、という話をRust学習中にはじめて知った。

RustでNULLを扱う(Option, Some, None)

他言語でいうNULLを使いたいときはこれ。

Rustのmatch(制御フロー演算子)

C/C++にあるswitch文の上位互換みたいなやつ。

Rustの列挙型(enum)

C/C++/C#などと比べてパワフル。

Rustの構造体(メソッド)

クラスっぽい。