11章tailコマンド

胎生期のクジラから尻尾のないサルまで

—— They Might Be Giants, "Mammal" (1992)

本章では、「4章 headコマンド」の逆バージョンであるtailを実装します。tailは、1つ以上のファイルまたは標準入力の末尾の数バイトか数行(デフォルトでは末尾の10行)を表示するコマンドです。本章のプログラムでも不正な入力に対処する必要があり、場合によってはUnicode文字の表示がおかしくなることもあります。tailでは標準入力も扱えますが、現在のRustでは標準入力を処理する方法に制限があるため、今回実装するプログラムでは通常のファイルだけを対象にします。

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

  • once_cellクレートを使って、正規表現を静的変数として作成する方法
  • ファイルハンドル内の行やバイト位置を移動する方法
  • where句を用いて、型に複数のトレイト境界を指定する方法
  • Cargoでリリースバイナリをビルドする方法
  • 実行時の性能を比較するためにプログラムをベンチマークする方法

11.1 tailの動作

まずは、BSD版のtailに対するマニュアルページの一部を見て、今回のプログラムがどのように動作すべきかを確認しましょう。今回はこれらの機能の一部だけを実装します。

TAIL(1) BSD General Commands Manual TAIL(1) NAME tail -- display the last part of a file SYNOPSIS tail [-F | -f | -r] [-q] [-b number | -c number | -n number] [file ...] DESCRIPTION ...

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.