# rust project
当`cargo init --lib .`未设置`name`时,使用当前文件夹名称作为`package.name`。
当`cargo init --lib --name myutil .`设置`name`时,则使用`name`作为`package.name`。
```shell
cargo init --lib .
cargo init --lib --name myutil .
```
```toml
[package]
name = "my-util-rust"
version = "0.1.0"
edition = "2021"
```
当`lib.name`未设置时,使用`package.name`作为依赖项用来引用它的包名称,任何`-`破折号都将替换为`_`下划线。 也就是如果`package.name`中包含`-`破折号,则需要在coding中导入包`mod`或`use`时,把`-`破折号替换为`_`下划线。
当`lib.name`设置有效值时,忽略`package.name`,使用`lib.name`作为依赖项用来引用它的包名称。
```toml
[lib]
name = "myutil"
```
## reference 参考
[Package Layout](https://doc.rust-lang.org/cargo/guide/project-layout.html)
[cargo-init(1)](https://doc.rust-lang.org/cargo/commands/cargo-init.html)
[The Manifest Format](https://doc.rust-lang.org/cargo/reference/manifest.html)
[Cargo Targets](https://doc.rust-lang.org/cargo/reference/cargo-targets.html)
# dependencies 依赖
```shell
# 错误处理
cargo add --optional eyre
cargo add --optional color-eyre
#日志处理: tracing_log用于兼容标准库的log
cargo add --optional tracing
cargo add --optional -F env-filter,chrono tracing-subscriber
cargo add --optional --features env-filter,chrono tracing-subscriber
cargo add --optional --features "env-filter chrono" tracing-subscriber
cargo add --optional tracing-error
cargo add --optional tracing-core
cargo add --optional tracing-log
#日期时间
cargo add --optional chrono
cargo remove chrono
```
## reference 参考
[Command-line feature options](https://doc.rust-lang.org/cargo/reference/features.html#command-line-feature-options)
[Optional dependencies](https://doc.rust-lang.org/cargo/reference/features.html#optional-dependencies)
# publish to crates-io
```shell
~/RustroverProjects/my-util-rust git:[main]
cargo login --registry crates-io
please paste the token found on https://crates.io/me below
cio0xbQ9GoAVRkUtXgNGxpYMHE6TxAy3gFA
Login token for `crates-io` saved
CARGO_REGISTRY_TOKEN=ciohEZFHbCIL2xISzKLY7O7JxeTEQq12fD6
cargo publish --registry crates-io --allow-dirty
```