Rustの練習帳

―コマンドラインツールの作成を通してRustを学ぶ

[cover photo]
TOPICS
Programming
発行年月日
PRINT LENGTH
472
ISBN
978-4-8144-0058-4
原書
Command-Line Rust
FORMAT
Print PDF EPUB
Ebook
3,960円
Ebookを購入する
Print
3,960円

Rustは速度や安全性、並行性に優れたプログラミング言語で、ゲームエンジン、オペレーティングシステム、ブラウザなど、さまざまな分野で使われています。Rustは学習が難しい言語だと言われていますが、本書では小さなコマンドラインツールを多数書くことを通して、Rustの機能やテスト方法を素早く学ぶことができます。各章では、Rustの重要な概念を取り上げ、関連するコマンドラインツールを作成しながら学習を進めていきます。Rustの初心者から経験者まで、実際にプログラムを書きながらスキルを向上させたい人に最適な一冊です。

関連ファイル

目次

賞賛の声
訳者まえがき
まえがき

1章 イントロダクション
    1.1 Hello, world!
    1.2 Rustプロジェクトのディレクトリ構成
    1.3 Cargoを使ったプロジェクトの作成と実行
    1.4 統合テストの書き方と実行方法
        1.4.1 プロジェクトに依存関係を追加する
        1.4.2 プログラムの終了コードを確認する
        1.4.3 プログラムの出力をテストする
        1.4.4 終了コードはプログラムを組み合わせ可能にする
    1.5 まとめ

2章 echoコマンド
    2.1 echoの動作
    2.2 プロジェクトの作成
        2.2.1 コマンドライン引数へのアクセス
        2.2.2 依存関係にclapを追加する
        2.2.3 clapを使ったコマンドライン引数の解析
        2.2.4 プログラムの出力を作成する
    2.3 統合テストの作成
        2.3.1 テスト用ファイルの作成
        2.3.2 プログラムの出力を比較する
        2.3.3 Result型の使用
    2.4 まとめ

3章 catコマンド
    3.1 catの動作
    3.2 プロジェクトの作成
        3.2.1 テストから始める
        3.2.2 ライブラリクレートの作成
        3.2.3 引数の定義
        3.2.4 ファイル引数の反復処理
        3.2.5 ファイルまたは標準入力を開く
        3.2.6 テストスイートの使い方
    3.3 解答例
        3.3.1 ファイルから行を読み込む
        3.3.2 行番号の表示
    3.4 今後の学び方
    3.5 まとめ

4章 headコマンド
    4.1 headの動作
    4.2 プロジェクトの作成
        4.2.1 文字列を数値に変換する機能の単体テスト
        4.2.2 文字列をエラーに変換する
        4.2.3 引数の定義
        4.2.4 入力ファイルの処理
        4.2.5 バイトと文字の読み込み
    4.3 解答例
        4.3.1 ファイルを1行ずつ読み込む
        4.3.2 改行を保持したままファイルを読み込む
        4.3.3 ファイルからバイトを読み込む
        4.3.4 ファイルセパレーターを表示する
    4.4 今後の学び方
    4.5 まとめ

5章 wcコマンド
    5.1 wcの動作
    5.2 プロジェクトの作成
        5.2.1 ファイルの反復処理
        5.2.2 ファイルの要素を数える関数の作成とテスト
    5.3 解答例
        5.3.1 ファイルや標準入力の要素を数える
        5.3.2 出力の整形
    5.4 今後の学び方
    5.5 まとめ

6章 uniqコマンド
    6.1 uniqの動作
    6.2 プロジェクトの作成
        6.2.1 引数の定義
        6.2.2 プログラムのテスト
        6.2.3 入力ファイルの処理
    6.3 解答例
    6.4 今後の学び方
    6.5 まとめ

7章 findコマンド
    7.1 findの動作
    7.2 プロジェクトの作成
        7.2.1 引数の定義
        7.2.2 引数の検証
        7.2.3 検索の実装
    7.3 解答例
    7.4 UnixとWindowsでの条件付きテスト
    7.5 今後の学び方
    7.6 まとめ

8章 cutコマンド
    8.1 cutの動作
    8.2 プロジェクトの作成
        8.2.1 引数の定義
        8.2.2 ポジションリストの解析
        8.2.3 文字またはバイトの抽出
        8.2.4 区切り文字を含むテキストファイルの解析
    8.3 解答例
        8.3.1 文字列から文字を選択する
        8.3.2 文字列からバイトを選択する
        8.3.3 csv::StringRecordからフィールドを選択する
        8.3.4 最終版
    8.4 今後の学び方
    8.5 まとめ

9章 grepコマンド
    9.1 grepの動作
    9.2 プロジェクトの作成
        9.2.1 引数の定義
        9.2.2 検索対象のファイルを探す
        9.2.3 入力にマッチする行を検索する
    9.3 解答例
    9.4 今後の学び方
    9.5 まとめ

10章 commコマンド
    10.1 commの動作
    10.2 プロジェクトの作成
        10.2.1 引数の定義
        10.2.2 入力ファイルを検証してから開く
        10.2.3 ファイルの処理
    10.3 解答例
    10.4 今後の学び方
    10.5 まとめ

11章 tailコマンド
    11.1 tailの動作
    11.2 プロジェクトの作成
        11.2.1 引数の定義
        11.2.2 正負の数値引数の解析
        11.2.3 符号が付きうる整数への正規表現を用いたマッチング
        11.2.4 コマンドライン引数の解析と検証
        11.2.5 ファイルの処理
        11.2.6 ファイルの行数とバイト数を数える
        11.2.7 表示開始行の特定
        11.2.8 表示開始バイトの特定
        11.2.9 巨大な入力ファイルを使ったプログラムのテスト
    11.3 解答例
        11.3.1 ファイルの行数とバイト数を数える
        11.3.2 表示開始位置の特定
        11.3.3 行の表示
        11.3.4 バイトの表示
        11.3.5 解答例のベンチマーキング
    11.4 今後の学び方
    11.5 まとめ

12章 fortuneコマンド
    12.1 fortuneの動作
    12.2 プロジェクトの作成
        12.2.1 引数の定義
        12.2.2 入力ソースの検索
        12.2.3 ファイルを読み込む
        12.2.4 引用句のランダムな選択
        12.2.5 パターンに一致する引用句の表示
    12.3 解答例
    12.4 今後の学び方
    12.5 まとめ

13章 calコマンド
    13.1 calの動作
    13.2 プロジェクトの作成
        13.2.1 引数の定義と検証
        13.2.2 プログラムを書く
    13.3 解答例
    13.4 今後の学び方
    13.5 まとめ

14章 lsコマンド
    14.1 lsの動作
    14.2 プロジェクトの作成
        14.2.1 引数の定義
        14.2.2 ファイルの検索
        14.2.3 長形式の整形
        14.2.4 パーミッションの8進表記
        14.2.5 長形式のテスト
    14.3 解答例
    14.4 難易度の高いテストへの挑戦
    14.5 今後の学び方
    14.6 まとめ

付録A clapの新しいAPI
    A.1 Builder APIとDerive API
    A.2 Derive APIを使う準備
    A.3 Derive APIの基本
    A.4 #[command]属性
    A.5 引数の定義
        A.5.1 位置引数
        A.5.2 値を取るオプション
        A.5.3 値を取らないオプション
    A.6 おわりに

エピローグ
索引

コラム目次
    Cargoコマンド
    スタックとヒープ
    クロージャを引数に取るイテレータのメソッド
    変数の生存期間
    クロージャと関数の比較
    乱数生成器のシード設定