~/rust/first
src
│ app
│ │ src
│ │ │ lib.rs
│ │ └ entry.rs E
│ └ Cargo.toml
└ main.rs E
Cargo.lock
Cargo.toml
Este é meu primeiro projeto que estou montando em Rust.
Há um struct Entry{}
em . As listas src/app/src/entry.rs
de nível superior em sua seção. O -level define .Cargo.toml
members = ["src/app"]
[workspace]
app
Cargo.toml
[package]name="app"
No nível superior main.rs
eu simplesmente tenho let app = app::Entry::new();
, mas o compilador diz "uso de caixa ou módulo não declarado app
".
Por que declarar o pacote "app" no subdiretório e depois defini-lo como um membro no espaço de trabalho no nível superior não é suficiente para Entry
ser visto no main.rs de nível superior?
Se eu adicionar app = { path = "./src/app" }
à dependencies
seção, então funciona. Mas então por que ter membros do workspace?
O que estou perdendo?
-- https://doc.rust-lang.org/stable/cargo/reference/workspaces.html
Os membros do espaço de trabalho não são automaticamente dependências uns dos outros. Isso é realmente impossível, pois isso implicaria uma dependência cíclica entre as caixas.