用語が多いので一旦まとめる。
成果物
俯瞰
- クレート(
crate
。cargo new プロジェクト名 --lib
)- モジュール(
mod
)- 列挙(
enum
), 構造体(struct
) - メソッド(
impl
,fn
) - 関数(
fn
)- 変数宣言(
let
) - 制御文
- 条件文(
if
,match
,if let
) - 繰返文(
loop
,while
,for
)
- 条件文(
- 変数宣言(
- 列挙(
- モジュール(
実行バイナリ用クレート
- クレート(
cargo new プロジェクト名 --bin
)/src
main.rs
(cargo new プロジェクト名 --bin)
main.rsは単体テストコードが書けないのでシンプル。
ライブラリ用クレート
- クレート(
cargo new プロジェクト名 --lib
)/src
/tests
(結合テスト)任意ファイル名.rs
extern crate プロジェクト名;
#[test] fn test_任意関数名() { assert_eq!(プロジェクト名::任意関数名(), 1); }
lib.rs
がトップレベル。pub mod ファイル名;
のようにしてサブモジュールをロードする。
単体テストは同ファイル内にtests
モジュールを作成するのが慣習。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
$ uname -a Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
前回まで
- Rustを学んでみたい(プログラミング言語)
- Rustの環境構築
- RustでHelloWorld
- Rustの和訳ドキュメント
- Cargoでプロジェクト作成・ビルド・実行
- クレートとは?
- Rustで関数を使ってみる
- Rustでモジュールを使ってみる
- Rustで乱数を生成する(rand)
- Rustで標準入力する(std::io::stdin().read_line())
- RustでMatch判定する(match)
- Rustでprintとread_lineを1行にする方法
- Rustで数当てゲーム
- クレート名にドット.が使えない
- Rustの変数と可変性(let, mut) error[E0384]: cannot assign twice to immutable variable
x
- Rustのimmutable束縛とconst定数の違い
- RustのREPL、evcxrのインストールに失敗した
- Rustでコンパイルするときの変数未使用warningを消す
- Rustの変数(再代入、再宣言(シャドーイング))
- Rustのシャドーイングについて
- イミュータブルについて(副作用)
- Rustの定数(const)
- Rustのデータ型(数値)
- Rustのデータ型(論理)
- Rustのデータ型(文字)
- Rustのデータ型(タプル)
- Rustのデータ型(配列)
- Rustの関数
- Rustのif式
- Rustのくりかえし文(loop)
- Rustのくりかえし文(while)
- Rustのくりかえし文(for)
- Rustの所有権(ムーブ)
- Rustの所有権(関数)
- Rustの所有権(スライス)
- Rustの構造体(定義とインスタンス化)
- Rustの構造体(プログラム例)
- Rustの構造体(メソッド)
- Rustの列挙型(enum)
- Rustの列挙型(enum)
- Rustの列挙型(enum)
- Rustのmatch(制御フロー演算子)
- RustでNULLを扱う(Option, Some, None)
- NULL参照は10億ドルの失敗だった
- Rustの列挙型に独自表示を実装する(E0277 対策 std::fmt::Display 実装)
- RustのIfLet(matchの糖衣構文)