問題タブ [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::main
bin/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
ファイルを追加し、書き込みを行いますが、:src
lib
use mod_test::lib::two;
one.rs
1)クレートで「ダムモジュール宣言ファイル」を増やさないという考えを無効にします。
main.rs
2) 2 つの異なる場所 (とlib.rs
)でまったく同じ情報を文字通りコピーする必要があります。3)
use mod_test::lib::two;
は唯一の機能する構文です。crate
またはsuper
キーワードを使用すると、難解なコンパイラ エラーが発生します。