目次
文書の過去の版を表示しています。
Rust ランゲージ メモ
よく使う機能 - Cargo 編 😍
新しいパッケージの作成 [new]
$ cargo new haruo_axum
Creating binary (application) `haruo_axum` package note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
$ tree haruo_axum
haruo_axum ├── Cargo.toml └── src └── main.rs
依存するクレートの追加 [add]
Cargo.toml を手で編集することなく、cargo add で好きなクレートをどんどん追加して開発できる😊
$ cd haruo_axum $ bat -p Cargo.toml
[package] name = "haruo_axum" version = "0.1.0" edition = "2021" [dependencies]
Axum を追加する場合…🤔
$ cargo add axum
Updating crates.io index Adding axum v0.7.5 to dependencies Features: + form + http1 + json + matched-path + original-uri + query + tokio + tower-log + tracing - __private_docs - http2 - macros - multipart - ws Updating crates.io index
$ bat -p Cargo.toml
[package] name = "haruo_axum" version = "0.1.0" edition = "2021" [dependencies] axum = "0.7.5"
Features (特徴) を有効にしてクレートを追加する場合…🤔
$ cargo add tokio --features rt-multi-thread
Or
$ cargo add tokio -F rt-multi-thread
Updating crates.io index Adding tokio v1.38.0 to dependencies Features: + num_cpus + rt + rt-multi-thread - bytes - fs - full - io-std - io-util - libc - macros - mio - net - parking_lot - process - signal - signal-hook-registry - socket2 - sync - test-util - time - tokio-macros - tracing - windows-sys
依存クレートを追加済みでも、Features をあとから追加で有効化できる…🤔
Features を複数有効化したい場合はカンマ(“,”) で区切って指定する😊
$ cargo add diesel
Updating crates.io index Adding diesel v2.2.0 to dependencies Features: + 32-column-tables + with-deprecated - 128-column-tables - 64-column-tables - __with_asan_tests - chrono - extras - huge-tables - i-implement-a-third-party-backend-and-opt-into-breaking-changes - ipnet-address - large-tables - mysql - mysql_backend - mysqlclient-src - network-address - numeric - postgres - postgres_backend - pq-src - quickcheck - r2d2 - returning_clauses_for_sqlite_3_35 - serde_json - sqlite - time - unstable - uuid - without-deprecated Updating crates.io index
$ cargo add diesel -F postgres,r2d2,chrono,i-implement-a-third-party-backend-and-opt-into-breaking-changes
Updating crates.io index Adding diesel v2.2.0 to dependencies Features: + 32-column-tables + chrono + i-implement-a-third-party-backend-and-opt-into-breaking-changes + postgres + postgres_backend + r2d2 + with-deprecated - 128-column-tables - 64-column-tables - __with_asan_tests - extras - huge-tables - ipnet-address - large-tables - mysql - mysql_backend - mysqlclient-src - network-address - numeric - pq-src - quickcheck - returning_clauses_for_sqlite_3_35 - serde_json - sqlite - time - unstable - uuid - without-deprecated
開発時のみ必要なクレートは、--dev
オプションを指定して追加する🤔
$ cargo add --dev assert_cmd predicates
Updating crates.io index Adding assert_cmd v2.0.14 to dev-dependencies Features: - color - color-auto Adding predicates v3.1.0 to dev-dependencies Features: + color + diff + float-cmp + normalize-line-endings + regex - unstable Updating crates.io index
必要なクレートをどんどん追加する😅
$ cargo add serde -F derive $ cargo add tracing-subscriber $ cargo add clap -F derive