我正在尝试在
Foo
板条箱中实现一个特征 foo
,并在关联的板条箱 #[derive]
中实现一个同名的 foo-macros
proc-macro。
目的是拥有类似
serde::Deserialize
的东西,它既是一个特征,又是一个派生宏。
为了让用户更方便,我想将我的
foo-macros
板条箱的派生宏重新导出到我的foo
板条箱中,就像serde
一样。
但是,当我尝试这样做时,我遇到了这个错误:
error[E0252]: the name `Foo` is defined multiple times
这是触发此操作的代码示例:
//! My `foo` crate `lib.rs`.
mod foo;
pub use foo::Foo;
#[cfg(feature = "derive")]
extern crate foo_macros;
#[cfg(feature = "derive")]
pub use foo_macros::Foo;
我不明白为什么这在
serde
中有效,但在我的情况下不起作用。我错过了什么?