Skip to Content
Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ
book

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

by Ken Youens-Clark, 中山 光樹
January 2024
Intermediate to advanced
472 pages
5h 56m
Japanese
O'Reilly Japan, Inc.
Content preview from Rustの練習帳 ―コマンドラインツールの作成を通してRustを学ぶ

8章cutコマンド

私は取り乱している / あなたに見捨てられたから /

でもチャッキーの腕に抱かれているから寂しくない

—— They Might Be Giants, "Cyclops Rock" (2001)

本章では、ファイルや標準入力を読み込んで、指定した部分だけを切り出すcutコマンドを作成します。切り出されるテキストは、ある範囲のバイトや文字になる場合もあれば、カンマやタブで区切られたフィールドになる場合もあります。「4章 headコマンド」では連続した文字やバイトの範囲を選択する方法を学びましたが、今回は選択範囲が非連続で任意の順序になりえます。たとえば、切り出す範囲として3,1,5-7を指定した場合、3番目の後に1番目、次いで5から7番目までのバイトや文字、フィールドを出力する必要があります。今回のプログラムでは元のプログラムを尊重しつつ、いくつか変更を加えて実装します。

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

  • csvクレートを使って、区切り文字の含まれるテキストファイルを読み書きする方法
  • *を使った値の参照解決(dereference)†1
  • Iterator::flattenを使って、イテレータから入れ子構造を除去する方法
  • Iterator::mapIterator::flattenを組み合わせたIterator::flat_mapの使い方

[†1] 訳注:「参照外し」と呼ぶ場合もあるが、本書では『プログラミングRust 第2版』に合わせて参照解決とした。

8.1 cutの動作

まずは、BSD版のcutコマンドのマニュアルページのうち、これから実装する機能に関連する部分を見てみましょう。

CUT(1) BSD General Commands Manual ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

プログラミングC# 第8版

プログラミングC# 第8版

Ian Griffiths, 木下 哲也, 鈴木 幸敏
進化的アーキテクチャ ―絶え間ない変化を支える

進化的アーキテクチャ ―絶え間ない変化を支える

Neal Ford, Rebecca Parsons, Patrick Kua, 島田 浩二

Publisher Resources

ISBN: 9784814400584Publisher Website