私はRustに不慣れで、Cargoを使用してテストプロジェクトを構築しようとしています。私のCargo.toml
は次のようになります。
[package]
name = "Rust-play"
version = "0.0.1"
authors = [ "Bradley Wogsland <omitted>" ]
(しかし、実際のTOMLファイルは私のメールを省略しません)。 cargo build
を実行すると、次のエラーが発生します。
エラー:
/Users/wogsland/Projects/Rust-play/Cargo.toml
でマニフェストを解析できませんでした原因:src/lib.rs、src/main.rs、[lib]セクション、または[[bin]]セクションのいずれかがマニフェストで指定されていてはなりません。
私のmain
関数はsrc/test.rs
ファイルにあります。 TOMLファイルで指定する必要がありますか?もしそうなら、どのように?追加してみた
target = "src/test.rs"
無駄に。
エラーが言うように:
src/lib.rs
、src/main.rs
、[lib]
セクション、または[[bin]]
セクションのいずれかが存在する必要があります
したがって、直接的な答えは [[bin]]
セクションを追加 です。
[[bin]]
name = "test"
path = "src/test.rs"
ただし、予想される場所src/main.rs
にファイルを配置するのがはるかに一般的です。複数のバイナリを使用する場合は、src/bin/test.rs
に配置することもできます。
実際にコードをテストするためのものである場合、単体テストはテストするコードと同じファイルに入れられ、統合テストはtests/foo.rs
に入れられます。
まとめとして:
cargo new xxx --bin
を使用すると、src
ディレクトリにあるファイルはmain.rs
という名前になります。そして、ファイルCargo.toml
を確認すると、あなたが書いたのと同じです。したがって、最初の方法はsrcのファイルをmain.rs
に変更することです
貨物レポートとして、[[bin]]
を使用してファイルを設定できます。 @Shepmasterが解決しました。
どちらの方法でも機能します。
別の問題と解決策:Cargo.toml
ファイルをにコピーした場合にも、このエラーが発生する可能性がありますクレートの親フォルダ。
私の場合、そしておそらくあなたのケースでも、rsファイルはmain.rs
という名前ではありませんでしたが、Cargoはsrc/main.rs
がバイナリクレートのクレートルートであると想定しています。したがって、ルールは、プロジェクトが実行可能ファイルの場合、メインソースファイルにsrc/main.rs
という名前を付けることです。ライブラリの場合は、メインのソースファイルにsrc/lib.rs
という名前を付けます。
さらに、Cargoはsrc/bin/*.rs
にあるファイルも、前の回答で述べたように実行可能ファイルとして扱います。