10章commコマンド

これまで一度も常識的な目であなたを見たことがない

—— They Might Be Giants, "Circular Karate Chop" (2013)

本章では、Rust版のcommコマンドを作成します。このコマンドは2つのファイルを読み込み、両方に共通する行とそれぞれに固有な行を出力します。これらを集合演算と考えると、共通する行は2つのファイルの共通部分、固有な行は差集合になります。もしデータベースに詳しいなら、これらは結合演算の一種と考えることもできるでしょう。

本章では、以下の内容を学びます。

  • ファイルハンドルの行をIterator::nextを使って手動で反復処理する方法
  • タプルを使って、ありえる組み合わせに対してmatchする方法
  • std::cmp::Orderingを使った文字列の比較

10.1 commの動作

まずはどのようなプログラムを実装する必要があるかを示すために、BSD版のcommコマンドのマニュアルページの一部を見て、動作を確認してみましょう。

COMM(1) BSD General Commands Manual COMM(1) NAME comm -- select or reject lines common to two files SYNOPSIS comm [-123i] file1 file2 DESCRIPTION The comm utility reads file1 and file2, which should be sorted lexically, and produces three text columns as output: lines only in file1; lines only ...

Get Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.