Zum Inhalt springen

Workspaces

Betrachten Sie einen Workspace mit der folgenden Struktur:

├── Cargo.lock
├── Cargo.toml
└── crates
├── a
| ├── lib.rs
| └── Cargo.toml
└── b
├── lib.rs
└── Cargo.toml

Mit dem folgenden Inhalt in jeder Datei:

crates/b/lib.rs
pub fn f() {}
crates/a/Cargo.toml
[dependencies]
b = {path = "../b"}

Welcher der folgenden Pfade ist der korrekte, um auf f innerhalb von a/lib.rs zu verweisen?

Aus der Perspektive von a ist b eine externe Crate wie jede andere, daher verwenden Sie kein Präfix, um auf ihre Elemente zuzugreifen.


Betrachten Sie einen Workspace mit drei Paketen a, b und c. Ihre jeweiligen Manifeste sind:

a/Cargo.toml
[dependencies]
rand = "0.8.4"
# b/Cargo.toml
[dependencies]
rand = "0.7.3"
# c/Cargo.toml
[dependencies]
rand = "0.8.5"

Wie viele verschiedene Versionen von rand werden beim Kompilieren aller Pakete im Workspace verwendet? Geben Sie Ihre Antwort als Ziffer an, z.B. 0, 1, usw.

Gemäß den Regeln der semantischen Versionierung werden a und c beide den neuesten Patch der Minor-Version 0.8 teilen. b wird den neuesten Patch der Minor-Version 0.7 verwenden. Es werden also insgesamt zwei Versionen verwendet.