Ich habe Kiste A
, die auf B
und B
angewiesen sind rust-nmea Kiste.Cargo-Build des gleichen Codes: falsche Kompilierzeit Fehler?
Wenn ich Kiste bauen A
Ich habe Haufen von Fehlern (alle von ihnen, die use std::error::Error;
verpasst) während der Build von rust-nmea Abhängigkeit:
error[E0599]: no method named `description` found for type `nom::Err<&[u8]>` in the current scope
--> /home/evgeniy/.cargo/registry/src/github.com-1ecc6299db9ec823/nmea-0.0.6/src/parse.rs:100:44
|
100 | IError::Error(e) => e.description().to_string(),
| ^^^^^^^^^^^
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope, perhaps add a `use` for it:
candidate #1: `use std::error::Error;`
Aber wenn ich gehen, um Quellbaum von B
Kiste und laufen cargo build
, alle bauen ohne Fehler (wenn Sie mir folgen abhängen A
auf B
und B
hängen von rust-nmea),
wenn auch /home/evgeniy/.cargo/registry/src/github.com-1ecc6299db9ec823/nmea-0.0.6/
gehen (siehe com Pfahlfehler) und run cargo build
dann alles gut.
Ladung Baum Show für A
:
│ ├── chrono v0.4.0
│ │ ├── num v0.1.40
│ │ │ ├── num-integer v0.1.35
│ │ │ │ └── num-traits v0.1.40
│ │ │ ├── num-iter v0.1.34
│ │ │ │ ├── num-integer v0.1.35 (*)
│ │ │ │ └── num-traits v0.1.40 (*)
│ │ │ └── num-traits v0.1.40 (*)
│ │ └── time v0.1.38
│ │ └── libc v0.2.27
├── nmea v0.0.6
│ ├── chrono v0.4.0 (*)
│ └── nom v3.2.0
│ └── memchr v1.0.1 (*)
und für zwischengespeicherte von cargo
rust-nmea:
├── chrono v0.4.0
│ ├── num v0.1.40
│ │ ├── num-integer v0.1.35
│ │ │ └── num-traits v0.1.40
│ │ ├── num-iter v0.1.34
│ │ │ ├── num-integer v0.1.35 (*)
│ │ │ └── num-traits v0.1.40 (*)
│ │ └── num-traits v0.1.40 (*)
│ └── time v0.1.38
│ └── libc v0.2.27
└── nom v3.2.0
└── memchr v1.0.1
└── libc v0.2.27 (*)
so für guten und schlechten Fall verwendete die gleichen Abhängigkeiten.
Wenn cargo build -v -j1
ausgeführt, habe ich rustc
Befehlszeile für beide Fälle.
Der einzige Unterschied für guten und schlechten Fall ist dieser Teil:
-L dependency=/home/evgeniy/.cargo/registry/src/github.com-1ecc6299db9ec823/nmea-0.0.6/target/debug/deps --extern chrono=/home/evgeniy/.cargo/registry/src/github.com-1ecc6299db9ec823/nmea-0.0.6/target/debug/deps/libchrono-8e9e54e691d9b988.rlib --extern nom=/home/evgeniy/.cargo/registry/src/github.com-1ecc6299db9ec823/nmea-0.0.6/target/debug/deps/libnom-b72336f662b090c1.rlib
schlimmer Fall hat unterschiedlichen Pfad zu Bibliotheken und libnom-e2ec53418967eac0.rlib
statt libnom-b72336f662b090c1.rlib
, während libchrono-8e9e54e691d9b988.rlib
Spiel.
Die Kisten A
und B
stammen aus der Nähe und ich kann das Problem nicht auf einen einfacheren Fall reduzieren. nom Kisten nicht in A
und B
außer über rust-nmea. rust-nmea wird in einfacher Weise verwendet, nur nmea = 0.0.6
in Cargo.toml
. Keine Flaggen oder so Dinge.
Eine Idee, warum Krate Abhängigkeit mit den gleichen Flags (überhaupt keine Flags) kann produzieren oder nicht Syntaxfehler erzeugen?
Blindschuss im Dunkeln: Verwenden Sie Rostup, und wenn ja, haben Sie lokale Overrides gesetzt, die stören könnten? –
@DK. Ja, ich habe 'rostup' verwendet, aber der letzte Befehl zum Überschreiben war:' grep -a override ~/.bash_history | grep rostup | tail -n 1' 'rostup override unset'. Gibt es eine Möglichkeit zu überprüfen, ob "override" noch aktiv ist? – fghj
Es gibt 'Rost Override-Liste'. –