58
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rustエラーライブラリのトレンド解説(2020年1月版)

Posted at

はじめに

この記事は「Rustのエラーライブラリ利用状況を調べてみた」の続きです。前回から3ヶ月も経っていませんが、そこそこ大きな変化があったので更新することにしました。

2020年1月時点のトレンドグラフ

前回の記事では単に各エラーライブラリの使用数を表にまとめただけでしたが、その後クレートのトレンドグラフを作るcargoサブコマンドcargo-trendを作ったので、その結果で解説します。
(cargo-trendの紹介はこちら

error.png

縦軸は全クレートに対する割合で、例えば現在のfailureは全クレートの6%程度に使用されています。

冒頭に述べた大きな変化というのはこのfailureの割合が減り始めたということです。
その代わりanyhowとthiserrorが大きくシェアを伸ばしています。
(重なっていて見づらいですが、右下で急上昇中の2つです)

以下は直近1か月で使用率の伸びたクレートトップ5ですが、anyhow/thiserrorの両方が入る結果となりました。

top5.png

anyhowとthiserror

この2つのクレートは昨年11月頃にリリースされました。作者はsynやquoteといったマクロ周りの重要クレートをたくさん作っているdtolnay氏です。出たばかりですがすでにバージョン1.0になっていて、その点でも選びやすい気がします。

2種類あるのは用途が違うためです。ざっくりと言えばanyhowがアプリケーション用、thiserrorがライブラリ用です。
failureでは同じライブラリの使い方を変えることでアプリケーションとライブラリの両方をカバーしていました。
個人的にはこのように別れている方が分かりやすいと思います。

試しに手元のアプリケーションをいくつかanyhowにしてみましたが、ほとんどfailureと同じAPIが提供されているのでuseを書き換えるくらいで簡単に移行できました。

最近cargoのエラーライブラリがfailureからanyhowに変わった("Migrate from the failure crate to anyhow #7776")ようですし、今後作るアプリケーションはanyhowで行こうと思います。

まとめ

まだ当分failureが主流かと思っていましたが、意外と早く世代交代するのかもしれません。

58
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?