問題タブ [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.
rust - クレートのインストールにテキストファイルを含める方法
私のプログラムは、ローカル マシンで期待どおりに動作します。Emacs の「Spook」アミューズメント (Mx spook) の流れで、テキスト ファイルからランダムな行を出力します。テキスト ファイルは にありますsrc/spook.lines。
しかし、それをクレートとして公開してインストールすると、テキストファイルが見つかりません (src/spook.linesプログラムが crates.io からインストールされた場合に存在しないため):
ファイルを含める方法は次のとおりです。
貨物/クレートのパッケージにテキスト ファイルを含めるように指示できないのはなぜですか? 好ましい方法は何ですか?ファイルを特定のディレクトリに含めたとしてもPATH、プログラムはどこからでも実行される可能性があるため、実行には含まれません。
module - Rust でのクロスモジュール関数呼び出し
あるモジュールに属する関数を別のモジュールから呼び出そうとしています (コードのファクタリング、編成などのために)。
これが私のクレート構造です:
私はmain宣言します:
これらすべてのファイルには、単純に trivial が含まれていますpub fn main() {println!("hello");}。
この時点で、すべて問題ありません。
では、から呼び出すことはできますか?lib::two::mainbin/one.rs
use crate::lib::two;、 、のいずれも作業use super::lib::two;にuse self::super::lib::two;追加されませんでしbin/one.rsた。
編集: 私は:
rustc 1.42.0 (b8cedc004 2020-03-09)Linux 5.3.0-45-generic にインストールしました。編集2:
superキーワードを使用するたびに、次の不思議なエラーが発生しますrustc:
これに関するトラブルシューティングはどこにもありません。
編集 3:モジュール構造の宣言に
lib.rsファイルを追加し、書き込みを行いますが、:srclibuse mod_test::lib::two;one.rs1)クレートで「ダムモジュール宣言ファイル」を増やさないという考えを無効にします。
main.rs2) 2 つの異なる場所 (とlib.rs)でまったく同じ情報を文字通りコピーする必要があります。3)
use mod_test::lib::two;は唯一の機能する構文です。crateまたはsuperキーワードを使用すると、難解なコンパイラ エラーが発生します。