逐次編集
開発ツール
tier 1 よく使うもの
- https://github.com/dtolnay/cargo-expand - マクロを展開して確認
- https://github.com/rust-lang/rustfmt - コードフォーマッタ
- https://github.com/rust-lang/rust-clippytest - linter
- https://github.com/rust-lang/rustfix - コード書き換え
- https://github.com/passcod/cargo-watch - file watcher
- https://github.com/kbknapp/cargo-outdated - 古い依存の確認
- https://github.com/RustSec/cargo-audit - 脆弱性の確認
- https://github.com/nabijaczleweli/cargo-update - cargo install しているツールの一斉更新
- https://github.com/matthiaskrgr/cargo-cache - ビルドキャッシュの掃除
- https://github.com/est31/cargo-udeps - 使ってない依存の確認
- https://github.com/rsolomo/cargo-check - link しないので高速なコンパイルチェック
- https://github.com/mozilla/sccache - ビルドキャッシュ共有でコンパイル高速化
tier 2 知っとくと便利なもの
- https://github.com/mozilla/grcov - コードカバレッジ計測
- https://github.com/rr-debugger/rr - 巻き戻し可能なデバッガ
- https://github.com/IgaguriMK/cargo-clean-recursive - https://igaguri.hatenablog.com/entry/2020/06/07/133847
- https://github.com/tbrand/cargo-tomlfmt - Cargo.toml のフォーマッタ
- https://github.com/gnzlbg/cargo-asm - asm ツール
- https://github.com/google/evcxr - REPL
- https://github.com/rust-lang/miri - REPL
- https://github.com/mitsuhiko/insta - スナップショットテスト
- https://github.com/nextest-rs/nextest - すごいテスト
- https://github.com/svenstaro/cargo-profiler - プロファイラ
- https://github.com/rust-embedded/cargo-binutils - binutils
tier 3 その他有象無象
- https://gitlab.henriktjader.com/pln/cargo-klee
- https://github.com/awslabs/git-secrets
- https://github.com/tj/git-extras
- https://github.com/orhun/git-cliff
- https://github.com/taiki-e/cargo-llvm-cov - コードカバレッジ
-
https://github.com/hhatto/cargo-strict -
unwarp
をexpect
に書き換え - https://github.com/RazrFalcon/cargo-bloat - コードサイズ検証ツール
- https://github.com/dtolnay/cargo-llvm-lines - llvm 確認
- https://github.com/facebookexperimental/MIRAI - MIR インタプリタ
- https://github.com/rust-fuzz/cargo-fuzz - libFuzzer
- https://github.com/rust-secure-code/cargo-geiger - unsafe コードの統計を取る
- https://github.com/onur/cargo-license - 依存 crate のライセンスを列挙
- https://github.com/EmbarkStudios/cargo-deny - 依存させたくない crate の調査
- https://github.com/xd009642/tarpaulin - コードカバレッジ
- https://github.com/luser/rustfilt - デマングル
- https://github.com/termoshtt/katexit - rustdoc に katex 挿入
- https://github.com/rust-cross/cargo-zigbuild - glibc のバージョンが固定できる
rust 製 CLI ツール
more info
- https://github.com/rust-unofficial/awesome-rust
- https://github.com/TaKO8Ki/awesome-alternatives-in-rust
- https://github.com/ibraheemdev/modern-unix
- https://zenn.dev/zenwerk/scraps/8d323eaa63b76d
シェルツール
- https://github.com/BurntSushi/ripgrep - grep
- https://github.com/phiresky/ripgrep-all - grep
- https://github.com/sharkdp/fd - find
- https://github.com/jhspetersson/fselect - find
- https://github.com/dalance/procs - ps
- https://github.com/ogham/exa - ls
- https://github.com/Peltoche/lsd - ls
- https://github.com/willdoescode/nat - ls
- https://github.com/dflemstr/rq - jq
- https://github.com/yamafaktory/jql - jq
- https://github.com/theryangeary/choose - awk
- https://github.com/ezrosent/frawk - awk
- https://github.com/chmln/sd - sed
- https://github.com/BurntSushi/xsv - csv
- https://github.com/wfxr/csview - csv
便利ツール
- https://github.com/nushell/nushell - bash
- https://github.com/dbrgn/tealdeer - tldr
- https://github.com/denisidoro/navi - tldr
- https://github.com/sharkdp/bat - cat
- https://github.com/SoptikHa2/desed - sed
- https://github.com/m4b/bingrep - readelf
- https://github.com/dandavison/delta - git-diff
- https://github.com/ajeetdsouza/zoxide - cd
- https://github.com/lotabout/skim - fzf
- https://github.com/sharkdp/hexyl - hexdump
- https://github.com/cyrus-and/gdb-dashboard/ - gdb
- https://github.com/Canop/broot - screen, tmux, ls, tree
- https://github.com/zellij-org/zellij - tmux
- https://github.com/rust-lang/mdBook - markdown to html
- https://github.com/Y2Z/monolith - mhtml
- https://github.com/watchexec/watchexec - watch
- https://github.com/Aloxaf/silicon - carbon (コードスニペットのサムネイル作るやつ)
- https://github.com/sharkdp/hyperfine - time
- https://github.com/Nukesor/pueue - gnu parallel
- https://github.com/r-darwish/topgrade - apt update その他全部やる
- https://github.com/anordal/shellharden - shellcheck
- https://github.com/ogham/dog - dig
- https://github.com/vamolessa/pepper - vim
- https://github.com/ChuckDaniels87/rnr - rename
- https://github.com/ducaale/xh - curl
- https://github.com/saschagrunert/git-journal
システムモニタ
- https://github.com/ClementTsang/bottom - top
- https://github.com/bvaisvil/zenith - top
- https://github.com/bootandy/dust - du
- https://github.com/nachoparker/dutree - du
- https://github.com/Byron/dua-cli - du
- https://github.com/imsnif/diskonaut - du
- https://github.com/imsnif/bandwhich - iftop
- https://github.com/orf/gping - ping
マクロを書くときに使う
- https://github.com/dtolnay/proc-macro2 - テスト可能なproc_macro
- https://github.com/dtolnay/syn - proc-macroのトークンストリームからrust構文木を生成する
- https://github.com/dtolnay/quote - quote!マクロ
- https://github.com/dtolnay/paste - concat_idents! より強力なシンボル結合マクロ
- https://github.com/CreepySkeleton/proc-macro-error - proc_macroのエラーを見やすくする
- https://github.com/Goncalerta/proc-quote - quote!のproc_macro版
- https://github.com/rustyhorde/vergen -ビルド時の環境変数にgitやCargo.tomlの情報を入れる
- https://github.com/rodrimati1992/const_format_crates/
型レベルプログラミング
- https://github.com/lloydmeta/frunk
- https://github.com/Metaswitch/frunk-enum
- https://github.com/paholg/typenum
- https://github.com/dtolnay/ghost
- https://github.com/dtolnay/reflect
- https://github.com/japaric/cast.rs
- https://github.com/marcianx/downcast-rs
- https://github.com/Clikengo/usize_cast
- https://github.com/dtolnay/ref-cast
- https://github.com/willcrichton/tyrade
よく使う型
- https://github.com/bluss/either - Either型
- https://github.com/rust-lang/regex - 正規表現
- https://github.com/rust-random/rand - 乱数
- https://github.com/servo/rust-url - url
- https://github.com/marshallpierce/rust-base64 - base64
- https://github.com/uuid-rs/uuid - uuid
- https://github.com/chronotope/chrono - DateTime
- https://github.com/chronotope/chrono-tz - TimeZone
- https://github.com/tokio-rs/bytes - Bytes
- https://github.com/rust-num/num - bigint,複素数,その他数値関連
- https://github.com/myrrlyn/funty - 数値型トレイト
- https://github.com/alkis/decimal - 128bit 10進浮動小数点数
ロガー
- https://github.com/rust-lang/log - ロギングインターフェース
- https://github.com/env-logger-rs/env_logger - 簡易ロガー
- https://github.com/tokio-rs/tracing - 高機能ロガー
derive マクロ
- https://github.com/rust-num/num-derive - enum と数値の相互変換
- https://github.com/serde-rs/serde - シリアライズ&デシリアライズインターフェース
-
https://github.com/jeltef/derive_more -
#[derive(From,Into,TryInto,etc...)]
- https://github.com/taiki-e/auto_enums
- https://github.com/Peternator7/strum
- https://github.com/Keats/validator
- https://github.com/idanarye/rust-smart-default
- https://github.com/bluejekyll/enum-as-inner
- https://github.com/xfix/enum-map
- https://github.com/stephaneyfx/enum-iterator
- https://github.com/jtempest/float_eq-rs
便利ユーティリティ
- https://github.com/rust-itertools/itertools - 便利イテレータ
- https://github.com/rust-lang-nursery/lazy-static.rs - 実行時の static 変数
- https://github.com/matklad/once_cell - 実行時の mutable な static 変数
- https://github.com/dtolnay/indoc
- https://github.com/dtolnay/remain
- https://github.com/dtolnay/readonly
- https://github.com/frozenlib/parse-display
- https://github.com/SimonSapin/rust-typed-arena
- https://github.com/servo/bincode
- https://github.com/bnjjj/chicon-rs
- https://github.com/lucab/caps-rs
- https://github.com/bytecodealliance/cap-std/
データ構造とアルゴリズム
- https://github.com/japaric/heapless
- https://github.com/tov/min-max-heap-rs
- https://github.com/bitflags/bitflags
- https://github.com/fizyk20/generic-array
- https://github.com/petgraph/petgraph
- https://github.com/bluss/arrayvec
- https://github.com/indiv0/lazycell
- https://github.com/bluss/maplit
- https://github.com/havarnov/multimap
- https://github.com/garro95/priority-queue
- https://github.com/bodil/im-rs
- https://github.com/andylokandy/arraydeque
- https://github.com/assert-rs/predicates-rs
- https://github.com/carllerche/slab
- https://github.com/fitzgen/id-arena
- https://github.com/bitvecto-rs/bitvec
- https://crates.io/crates/enum_dispatch
- https://docs.rs/ascii/1.0.0/ascii/
- https://docs.rs/indexmap/1.7.0/indexmap/
- https://docs.rs/ordered-float/2.8.0/ordered_float/
- https://docs.rs/superslice/1.0.0/superslice/
- https://docs.rs/itertools-num/0.1.3/itertools_num/
- https://docs.rs/maplit/1.0.2/maplit/
- https://docs.rs/either/1.6.1/either/
- https://docs.rs/im-rc/15.0.0/im_rc/
- https://docs.rs/rustc-hash/1.1.0/rustc_hash/
- https://docs.rs/smallvec/1.6.1/smallvec/
- https://docs.rs/dashmap/4.0.2/dashmap/
- https://github.com/tantivy-search/tantivy
- https://github.com/toshi-search/Toshi
シリアライズ
- https://github.com/serde-rs/json - JSON シリアライザ&デシリアライザ
- https://github.com/vityafx/serde-aux
- https://github.com/dtolnay/path-to-error
- https://git.ondrovo.com/packages/json_dotpath
- https://github.com/toml-rs/toml
- https://github.com/dtolnay/serde-yaml
- https://github.com/marshallpierce/base64-serde
- https://github.com/BurntSushi/rust-csv
- https://github.com/KokaKiwi/rust-hex
- https://github.com/withoutboats/heck - camelcase to snake case
- https://github.com/tokio-rs/prost - protocol buffer
- https://github.com/mozilla-services/canonicaljson-rs
- https://github.com/ruma/js_option - serde_json でnull と undefined の区別をつける
- https://github.com/maciejhirsz/logos
- https://github.com/mitsuhiko/minijinja - jinja2
- https://github.com/google/zerocopy
エラー
- https://github.com/dtolnay/anyhow - Any エラー型
-
https://github.com/dtolnay/thiserror -
#[derive(Error)]
- https://github.com/dtolnay/no-panic
- https://github.com/yaahc/eyre
並列処理
- https://github.com/rayon-rs/rayon - データ並列計算ライブラリ,並列イテレータ,タスク並列,スレッドプール
- https://github.com/crossbeam-rs/crossbeam - 並行計算ライブラリ,MPMC キュー,チャンネル
- https://github.com/Amanieu/parking_lot
- https://github.com/vorner/arc-swap
- https://github.com/jonhoo/rust-evmap -- left_right
- https://github.com/zesterer/flume
- https://github.com/bikeshedder/deadpool
- https://github.com/TimelyDataflow/differential-dataflow
- https://github.com/kanidm/concread
非同期
- https://github.com/tokio-rs/tokio - 非同期 IO ランタイム
- https://github.com/rustls/tokio-rustls - Tokioの TlsConnector の rustls 実装
- https://github.com/tokio-rs/tls/tree/master/tokio-native-tls - Tokioの TlsConnector の nativetls 実装
- https://github.com/rust-lang/futures-rs - Future
- https://github.com/hyperium/hyper - 低レベルHttpサーバ&クライアント
- https://github.com/hyperium/hyper-tls - native-tls を使った hyper 用 Https アダプタ
- https://github.com/rustls/hyper-rustls - rustls を使った hyper 用 Https アダプタ
- https://github.com/seanmonstar/reqwest - 高レベルHttpクライアント
- https://github.com/sfackler/rust-native-tls - TLS ライブラリ(バックエンドはプラットフォームごとのssl共有ライブラリ)
- https://github.com/rustls/rustls - Rust で再実装された TLS ライブラリ
- https://github.com/bluejekyll/trust-dns - DNS&リゾルバサーバ&クライアント
- https://github.com/dtolnay/async-trait
- https://github.com/tower-rs/tower
- https://github.com/tokio-rs/async-stream
- https://github.com/smol-rs/async-compat
- https://github.com/yoshuawuyts/futures-concurrency
- https://docs.rs/tokio-stream/0.1.7/tokio_stream/index.html
- https://github.com/ihrwein/backoff
- https://lib.rs/crates/axum
- https://github.com/DataDog/glommio - io_using を使った runtime
- https://github.com/bytedance/monoio - io_using を使った runtime
データベース
テスト・デバッグ・計測
- https://github.com/AltSysrq/proptest
- https://github.com/BurntSushi/quickcheck
- https://github.com/rust-fuzz/arbitrary
- https://github.com/asomers/mockall
- https://github.com/bheisler/criterion.rs
- https://github.com/mitsuhiko/insta
- https://github.com/mitsuhiko/similar-asserts
- https://github.com/tokio-rs/loom
- https://github.com/assert-rs/assert_cmd
- https://github.com/assert-rs/assert_fs
- https://github.com/tikv/fail-rs
- https://github.com/rust-fuzz/honggfuzz-rs
- https://gitlab.com/karroffel/contracts
- https://github.com/sile/trackable
- https://github.com/nvzqz/static-assertions-rs
- https://github.com/magnet/metered-rs
- https://github.com/rust-pretty-assertions/rust-pretty-assertions
- https://github.com/thomcc/rust-more-asserts
- https://github.com/la10736/rstest
- https://github.com/frondeus/test-case
- https://github.com/davidpdrsn/assert-json-diff
- https://crates.io/crates/cap
- https://github.com/loiclec/fuzzcheck-rs
Web API
- https://github.com/awslabs/aws-sdk-rust
- https://github.com/zenlist/serde_dynamo
- https://github.com/awslabs/aws-lambda-rust-runtime
- https://github.com/serenity-rs/serenity - discord
- https://github.com/getsentry/sentry-rust - sentry
数学・計算
- https://github.com/rustsim/alga
- https://github.com/rustsim/nalgebra
- https://github.com/boxtown/statrs
- https://github.com/paholg/dimensioned
- https://github.com/rust-ndarray/ndarray
- https://github.com/rust-ndarray/ndarray-linalg
- https://github.com/rust-ndarray/ndarray-stats
- https://github.com/rust-bio/rust-bio
- https://github.com/argmin-rs/argmin
- https://github.com/georust/geo
- https://github.com/iliekturtles/uom
- https://github.com/Stoeoef/spade
- https://github.com/stainless-steel/probability
- https://github.com/brendanzab/approx
- https://gitlab.com/Redpoll/changepoint
- https://github.com/tspooner/rstat
- https://github.com/vbarrielle/sprs
- https://github.com/liborty/rstats
- https://github.com/statrs-dev/statrs
- https://github.com/pola-rs/polars
- https://github.com/smartcorelib/smartcore
- https://github.com/benjarison/eval-metrics
- https://github.com/rust-ml/linfa
- https://github.com/rust-ndarray/ndarray-stats
- https://gitlab.com/daingun/automatica
- https://gitlab.com/Redpoll/changepoint
- https://github.com/guillaume-be/rust-bert
- https://github.com/charles-r-earp/autograph
- https://github.com/LaurentMazare/tch-rs
- https://github.com/spearow/juice
- https://crates.io/crates/rand_chacha
- https://crates.io/crates/rand_hc
- https://crates.io/crates/rand_pcg
- https://crates.io/crates/rand_distr
- https://github.com/p-e-w/savage
- https://gitlab.com/nyx-space/nyx/
CUI
- https://github.com/clap-rs/clap - コマンドライン引数パーサ
- https://github.com/kkawakam/rustyline - Readline
- https://github.com/vorner/signal-hook - Unixシグナルハンドラ
- https://github.com/Stebalien/term
- https://github.com/crossterm-rs/crossterm
- https://gitlab.redox-os.org/redox-os/termion
- https://github.com/mackwic/colored
- https://github.com/slog-rs/slog
- https://github.com/daboross/fern
- https://github.com/softprops/envy
- https://github.com/Geal/rust-syslog
- https://github.com/rust-psutil/rust-psutil
- https://github.com/knsd/daemonize
- https://github.com/GuillaumeGomez/sysinfo
- https://github.com/mitsuhiko/dialoguer
- https://github.com/rust-cli/human-panic
- https://github.com/JohnTitor/termize
- https://github.com/oli-obk/rust-si
- https://github.com/dotenv-rs/dotenv - dotenv reader
- https://github.com/loony-bean/textplots-rs - 文字列のグラフ描画
- https://github.com/ftxqxd/drawille-rs - 文字列のグラフ描画
GUI
- https://github.com/hecrj/iced
- https://github.com/dhardy/kas
- https://github.com/redox-os/orbtk
- https://github.com/antoyo/relm
- https://github.com/dhardy/kas
- https://github.com/Boscop/web-view
- https://github.com/emilk/emigui
- https://github.com/linebender/druid
graphic
- https://github.com/SiegeLord/RustGnuplot - グラフ描画
- https://github.com/milliams/plotlib - グラフ描画
- https://github.com/38/plotters - グラフ描画
- https://github.com/jrmuizel/raqote - グラフ描画
- https://github.com/nannou-org/nannou
- https://github.com/cloudhead/rgx
- https://github.com/nical/lyon
- https://github.com/parasyte/pixels
- https://github.com/Yatekii/imgui-wgpu-rs
- https://github.com/phaazon/luminance-rs
- https://github.com/jamwaffles/embedded-graphics
- https://github.com/17cupsofcoffee/tetra
動画・画像処理
- https://github.com/tuffy/matroska - matroska
- https://github.com/piderman314/bardecoder - QRコード
- https://github.com/image-rs/image - 画像ファイル
- https://github.com/raymanfx/libv4l-rs - 動画ファイル
- https://github.com/image-rs/imageproc - 画像処理
- https://github.com/rust-cv/ndarray-image - 画像処理アルゴリズム
- https://github.com/rust-cv/cv - 画像認識アルゴリズム
- https://github.com/rust-cv/ndarray-vision
web frontend
- https://github.com/rustwasm/gloo
- https://github.com/SoundRabbit/Kagura
- https://github.com/seed-rs/seed
- https://github.com/ivanceras/sauron
- https://github.com/yewstack/yew
- https://github.com/utkarshkukreti/draco
- https://github.com/emilk/egui
- https://github.com/Pauan/rust-dominator
wasm/wasi
- https://github.com/rust-lang/libm
- https://github.com/rustwasm/wasm-bindgen
- https://github.com/bytecodealliance/wasi
- https://github.com/rustwasm/wee_alloc
- https://github.com/rustwasm/twiggy
- https://github.com/rustwasm/gloo
- https://github.com/cloudflare/serde-wasm-bindgen
- https://github.com/rustwasm/wasm-pack
- https://github.com/rustwasm/console_error_panic_hook
- https://github.com/WebAssembly/wabt
- https://github.com/webassembly/binaryen
- https://github.com/iamcodemaker/console_log
- https://wapm.io/package/wabt
- https://emscripten.org/
- https://github.com/GoogleChromeLabs/wasm-bindgen-rayon
- https://github.com/wasmerio/loupe
パーサ
- https://github.com/lalrpop/lalrpop
- https://github.com/pest-parser/pest
- https://github.com/Geal/nom
- https://github.com/zesterer/chumsky
ffi
- https://github.com/rust-lang/rust-bindgen
- https://github.com/getditto/safer_ffi
- https://github.com/dtolnay/cxx
- https://github.com/google/autocxx
- https://github.com/eqrion/cbindgen
- https://github.com/dtolnay/inventory
- https://github.com/fussybeaver/bollard
no_std
- https://github.com/Rahix/avr-hal
- https://github.com/japaric/ufmt
- https://github.com/knurling-rs/defmt
- https://github.com/rust-embedded/nb
- https://github.com/japaric/ufmt
- https://gitlab.com/mmstick/numtoa
- https://github.com/dtolnay/ryu
- https://github.com/rkyv/rkyv
その他の情報源
- List of crates that improves or experiments with Rust, but may be hard to find - https://users.rust-lang.org/t/list-of-crates-that-improves-or-experiments-with-rust-but-may-be-hard-to-find/17806/1
- https://qiita.com/qryxip/items/7c16ab9ef3072c1d7199
- https://github.com/TaKO8Ki/awesome-alternatives-in-rust