Estou tentando reexportar uma caixa de terceiros para que os consumidores da minha biblioteca não precisem adicionar manualmente todas as dependências necessárias para algum código gerado via macro proc.
No entanto, não consigo encontrar o caminho para resolver o compilador, mesmo obtendo conclusões de código para navegar até esse caminho.
Como posso reexportar corretamente caixas de terceiros de uma caixa minha, para que os consumidores das minhas caixas que utilizam minhas macros proc não precisem adicionar manualmente caixas de terceiros para dar suporte ao código gerado?
Abaixo está um exemplo simplificado que deve ser equivalente ao meu problema, embora meu projeto real tenha problemas para resolver esse caminho no código gerado pela minha própria macro proc.
Estrutura do arquivo:
│ Cargo.lock
│ Cargo.toml
│ rust-toolchain.toml
│
├───consumer
│ │ .gitignore
│ │ Cargo.toml
│ │
│ └───src
│ main.rs
│
└───exporter
│ .gitignore
│ Cargo.toml
│
└───src
lib.rs
Na minha caixa "consumidor", tentei usar a Debug
macro derive fornecida pela derive_more
caixa.
Main.rs no consumidor:
#[derive(exporter::reexports::derive_more::Debug)]
pub struct Foo {
x: u64
}
fn main() {
println!("Hello, world!");
}
Cargo.toml no consumidor:
[package]
name = "consumer"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
exporter = { path = "../exporter" }
lib.rs no exportador:
pub mod reexports {
pub use derive_more;
}
Cargo.toml no exportador:
[package]
name = "exporter"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
derive_more = { version = "2", features = ["full"] }