エラーは即座にキャッチ
設定ファイルが存在しなかったり壊れていたら?ある環境変数の値が空だったら?こういうケースは忘れやすいものです!しかし、Rustのエラーハンドリング手法とライブラリ設計は優れているため、 こういった「もしも」の事態をプログラムを実行するよりも前に指摘するでしょう。
Rustのエラーハンドリング設定ファイルが存在しなかったり壊れていたら?ある環境変数の値が空だったら?こういうケースは忘れやすいものです!しかし、Rustのエラーハンドリング手法とライブラリ設計は優れているため、 こういった「もしも」の事態をプログラムを実行するよりも前に指摘するでしょう。
RustのエラーハンドリングRustならコードを整理することも柔軟にできます。最初は一つのファイルで済んでいたものがより多くの機能が必要になった場合にも、何かを壊してしまう心配なくアプリケーションをリファクタリングできます。
Rustにおけるリファクタリングコマンドラインアプリケーションを書くことは、Rustを学ぶ優れた方法です。
use clap::Parser;
/// Read some lines of a file
#[derive(Debug, Parser)]
struct Cli {
/// Input file to read
file: String,
/// Number of lines to read
#[structopt(short = 'n')]
num: usize,
}
use std::{error::Error, fs::read_to_string};
fn main() -> Result<(), Box> {
let args = Cli::parse();
read_to_string(&args.file)?
.lines()
.take(args.num)
.for_each(|line| println!("{}", line));
Ok(())
}
私たちがRustを気に入った理由の一つにcrates.ioのエコシステムがあります。 [...] 本当に素晴らしいコマンドラインインターフェイスを構築するための、非常に優れたインフラが数多く存在します。
– Armin Ronacher, Rust at Sentry – PolyConf 2017
このコードベースを利用していて後悔したことはありません。 [...] Rustを使ってCLIやコンソールベースのツールを作るというのは、私にとって予想外のボーナスのようなものでした。Rustは複数のターゲットシステム向けのコンパイルに非常に優れているのです。
– Fletcher Nichol, Taking Rust to Production – RustFest Kyiv