文書の過去の版を表示しています。
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