問題タブ [rust-crates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
207 参照

rust - 同じコードの貨物ビルド: 偽のコンパイル時エラー?

私はrust-nmeaAクレートに依存しBB依存しているクレートを持っています。

クレートをビルドすると、 rust-nmea依存関係のビルド中に大量Aのエラー (すべて失敗use std::error::Error;) が発生しました。

しかし、crate のソースツリーに移動してBrun を実行するcargo buildと、すべてエラーなしでビルドされます (私に従っていれば、 rust-nmeaAに依存しBB依存します)。

また、/home/evgeniy/.cargo/registry/src/github.com-1ecc6299db9ec823/nmea-0.0.6/(コンパイルエラーを参照)に移動して実行するとcargo build、すべて問題ありません。

のカーゴ ツリー ショーA:

そして、cargo rust-nmeaによってキャッシュされた場合:

そのため、良いケースと悪いケースの両方で同じ依存関係を使用しました。

run の場合、両方のケースでコマンドラインcargo build -v -j1を取得しました。rustc

良いケースと悪いケースの唯一の違いは、次の部分です。

悪いケースでは、ライブラリへのパスが異なり、libnom-e2ec53418967eac0.rlibの代わりにlibnom-b72336f662b090c1.rlib, while がlibchrono-8e9e54e691d9b988.rlib一致します。

クレートABソースは近いので、問題をより単純なケースに減らすことはできません。rust-nmea以外では使用されないnomクレートrust-nmeaは単純な方法で使用されます。フラグなどはありません。ABnmea = 0.0.6Cargo.toml

同じフラグ (フラグがまったくない) を持つクレートの依存関係が構文エラーを生成する場合と生成しない場合があるのはなぜですか?

0 投票する
1 に答える
62 参照

module - クレートの外で部分的にアクセス可能で、クレートの中で部分的にしかアクセスできないモジュールを持つことは可能ですか?

すべてを同じモジュールに入れるよりも良い方法はありますか?

sub_module.rs

lib.rs

問題は次のとおりGiantStructBuilder::new_giant_struct()です。このメソッドは新しいを作成するGiantStruct必要がありますが、これを行うには、pub fn new() -> GiantStruct内またsub_module.rsはすべてのフィールドGiantStructがパブリックである必要があります。どちらのオプションでも、クレートの外からアクセスできます。

この質問を書いているときに、次のようなことができることに気付きました。

sub_module.rs

ただし、これは実際には直観に反するように思えます。通常、呼び出し元が動作しているのに対し、関数変数が動作しているものであり、このように実行する場合は明らかにそうではありません。なので、何か良い方法があれば教えていただきたいです...