0

たとえば、依存関係に.rsという名前を付けることで、将来問題が発生する可能性があります。

[dependencies]
gccjit.rs = { git = "https://github.com/swgillespie/gccjit.rs.git" }

上記のコードで.rsは、Rust ソース コード ファイルではないものを使用しています。それは理想的ではありませんか、それともリポジトリと同じ名前にデフォルト設定する方が簡単なので大丈夫ですか?

オブジェクトに名前が付けられ.rsている場合、Rust ソース コードとして自動的に認識される可能性がありますが、この場合はそうではありません。

4

1 に答える 1

7

はい、問題があります。こんなことしないで。

どうやってこれを自分で判断できたのですか

提案したコードを使用してみてください。次のことがわかります。

$ cargo build
error: failed to parse manifest at `.../Cargo.toml`

Caused by:
  could not parse input as TOML

Caused by:
  expected an equals, found a period at line 9

同じ名前のパッケージを作成しようとした可能性もあります。次に、次のように表示されます。

$ cargo new 'gccjit.rs.git'
error: Invalid character `.` in crate name: `gccjit.rs.git`
use --name to override crate name

クレート名を管理するのは誰か

インポートされたクレートの名前をそのように制御することはできません。クレートがそれを決定しすでに 1 つ選択されています。

[package]
name = "gccjit"

インポート時に既存のパッケージの名前を変更する場合は、packageキーを使用して実際の名前と一致させる必要があります。

some_name = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }

Rust 2018 でクレートを慣用的にエイリアスする方法を参照してください。多くのための。

名前にピリオドを使用するには、一見文字列キーを使用できます (ただし、これはバグだと思います)。

"gcc.jit" = { package = "gccjit", git = "https://github.com/swgillespie/gccjit.rs.git" }

ただし、パッケージ名は有効な Rust 識別子である必要がありますが、ピリオドはそうではありません。これを行うと、パッケージを使用する方法がありません

とにかく冗長です

もっと意見に基づいて、そのような名前は完全に無意味です。もちろんRustコードなので、名前に「rs」や「rust」を付ける必要はありません。そうでなければ、そもそも依存関係として使用できませんでした。

同じ理由で、パッケージを "computer-source-code-awesome-tool" とは呼びません。

パッケージ名はソース管理とは異なります

Cargo と Rust は、ソース管理リポジトリの名前は気にしません。パッケージ名とは別のものです。それらがある程度似ている方が良いですが、それらが関連している必要がある本当の理由はありません.

パッケージ名はライブラリ名とは異なります

これは使用回数が非常に少ない機能ですが、パッケージの名前 (別名 Crates.io のクレートの名前) は、ライブラリの名前(コードにインポートされるもの) とは異なる場合があります。

ピストンは、私が知っている最大の「犯罪者」です。

[package]
name = "piston2d-graphics"
version = "0.30.0"

[lib]
name = "graphics"

デバッグしようとするのは気が狂ってしまうだけなので、これを使用しないでください。

于 2019-02-13T02:39:04.720 に答える