0

ライブラリと 1 つ以上のバイナリを含むクレートを作成しようとしています。ライブラリとバイナリの両方を含むRustパッケージを見てきましたか? およびクレートとモジュールに関するRustブックのセクションですが、コンパイルしようとするとエラーが発生します。

各ファイルの関連セクションを含めました (と思います)。

../cargo.toml:

[package]
name = "plotmote"
version = "0.1.0"
authors = ["Camden Narzt <my@nice.email>"]

[lib]
name = "lib_plotMote"
path = "src/lib.rs"

[[bin]]
name = "plotMote"
path = "src/main.rs"

lib.rs:

pub mod lib_plotMote;

lib_plotMote/mod.rs:

pub mod LogstreamProcessor;

lib_plotMote/LogstreamProcessor.rs:

pub struct LogstreamProcessor {

main.rs:

extern crate lib_plotMote;
use lib_plotMote::LogStreamProcessor;

エラー:

cargo build
   Compiling plotmote v0.1.0 (file:///Users/camdennarzt/Developer/Rust/plotmote)
main.rs:6:5: 6:37 error: unresolved import `lib_plotMote::LogStreamProcessor`. There is no `LogStreamProcessor` in `lib_plotMote` [E0432]
4

1 に答える 1

2

これはうまくいくはずです:

use lib_plotMote::lib_plotMote::LogStreamProcessor;

1つ目はlib_plotMoteからextern crateのもので、2 つ目はライブラリ クレートで定義したモジュールからのものです。

pub mod lib_plotMote;

したがって、ライブラリクレートには、偶然にもクレート自体と同じ名前のモジュールが 1 つ含まれています。

また、@starblue さんがお気づきのように、構造体の宣言箇所 ( LogstreamProcessor) と使用箇所 ( LogStreamProcessor) の大文字と小文字が一致していません。これも修正する必要があります。

補足として、慣用的な命名規則に従い、モジュール/クレート名でキャメルケースを避けることをお勧めします。

于 2016-02-16T05:53:58.243 に答える