昨晩から体調がおかしくなって、遊び呆ける。
diary
mahjang
昨晩は眠れなさそうだったからずっと雀魂をやっていた。
exchange hdd
HDDの交換をする。
次はSSDをM.2に換装するのをやりたい。
log
メンクリに行く。
game
昨晩の寝不足のせいで、大して何かができるような状況ではないので、ゲーセンで遊ぶ。
ゲームというのは、それを一緒に楽しむ相手や、後で話す相手がいないと、全く面白さを感じられない。
今日の勉強
rust
TRPL pp.258-263
testsディレクトリの体系化、グループ化をする
- testsディレクトリ直下の各ファイルは個別のクレートとしてコンパイルされる
- 個別のスコープを生成するのに役立つ
- srcファイルとは同じ振る舞いを共有しないことを意味する
- 共通モジュールとして抽出しようとするなら、
tests/module_name/mod.rs- モジュールの命名規則
- (7章に書いてあるとあったが、本当だろうか?記憶にない)
- これで結合テストファイルとして扱わないようにコンパイラに指示する
- 結合テストファイルからもモジュールとして使用することができる
mod module_name;と、モジュールを宣言
- モジュールの命名規則
インポートできるものできないもの
- バイナリクレートのファイルで定義された関数をテストでインポートはできない
- バイナリクレートはそれ単体で実行することを意味する
- ライブラリクレートのみが、他のクレートが呼び出して使用できる関数を晒せる
- ライブラリにロジックを置いて、
- それをバイナリが呼び出す単純な構造
12章
Rustはコマンドラインツールを作るのにふさわしい言語であると言える、それは以下の特徴による
- 速度
- 安全性
- 単バイナリ出力
- クロスプラットフォームサポート
grepを作る
- 環境変数の値を読み取ってツールの振る舞いを設定
- stdoutの代わりに、標準エラーに出力(stderr)
- エラーメッセージは画面上で確認しつつ、成功した出力はファイルにリダイレクトできる
- これまで学んだ概念をまとめ、これ以降のを少し学ぶ
最初の仕事; 2つの引数を受け付けるようにする
- cargo newで生成されたプログラムは与えた引数を処理できない。
- Crates.ioに存在する既存のライブラリもあるが、
- この能力を自分で実装しよう
- 標準ライブラリで提供されている関数
std::env::argsを使う- コマンドライン引数の値を読み取れるようにする
- コマンドライン引数のイテレーターを返す
- イテレーターに関して知っておくこととしては、
- 一連の値を生成すること
- collect関数を呼び出し、イテレーターが生成する要素の値全部を含むベクタなどのコレクションに変えられること
- イテレーターに関して知っておくこととしては、
- useしてスコープを導入する時は、
use std::envが慣習的- 希望の関数が2モジュール以上ネストされている場合は、親モジュールをスコープに導入するのが因習的
use std::env::argsにして、argsだけで使用すると、現在のモジュールで定義されている関数と間違われやすくなるから