逐次編集
開発ツール
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/launchbadge/sqlx
テスト・デバッグ・計測
-
- 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