structのために#[derive()]
の特性を実装する手続き型マクロを作成しようとしています。生成された実装コードでは、AnyMap
を使用する必要があります。クレートをconstブロックにインポートする
複数のクレートのインポートを避け、他のクレートのコード(つまりSerde)で読み取った内容に基づいて、生成したコードをconst _IMPL_xxx_FOR_xxx :() = { /* generated code */ };
ブロックに入れますが、コンパイルに失敗します。
error[E0432]: unresolved import `anymap::AnyMap`
--> src/main.rs:3:9
|
3 | use anymap::AnyMap;
| ^^^^^^^^^^^^^^ Maybe a missing `extern crate anymap;`?
error[E0432]: unresolved import `anymap::AnyMap`
--> src/main.rs:9:9
|
9 | use anymap::AnyMap;
| ^^^^^^^^^^^^^^ Maybe a missing `extern crate anymap;`?
はそれAnyMap
に特有の問題である:以下
const BLOCK_1:() = {
extern crate anymap;
use anymap::AnyMap;
};
const BLOCK_2:() = {
extern crate anymap;
use anymap::AnyMap;
};
fn main() {
println!("foo");
}
私は取得しています、コンパイルエラーと私の問題を再現することができたのですか?私が使用しているパターンが推奨されていない場合は、手続き型マクロコードを生成する多分異なるアプローチを含め、これを(修正する方法を知っていますか?
これらの要素@Djzinをありがとう。したがって、実際に使用が壊れている場合、手続き型マクロを使用するときにインポートを管理する最良の方法は何ですか? – Boris
あなたができることの1つは、あなたのコードをモジュールに入れて、 'use self :: anymap :: Anymap'を使ってインポートすることです。あなたはまだconst delarationの中にモジュールを置くことができます – Djzin
ありがとう。私はそれを試してみる – Boris