Po zastanawianie się cargo build of the same code: spurious compile time errors?, chcę wiedzieć, jak uniknąć takiego problemu:W jaki sposób mogę zapobiec uzależnieniu Cargo od tej samej zależności z różnymi funkcjami?
$ cargo new feature_merge
$ cargo add nmea
$ cargo check > /dev/null 2>&1 && echo "success"
success
$ cargo add cexpr
$ cargo check > /dev/null 2>&1 || echo "failed"
failed
$ cargo rm cexpr && cargo check > /dev/null 2>&1 && echo "success"
success
usunąć/dodać zależność bez modyfikacji kodu, a to wpływa na wynik kompilacji.
Źródłem problemu, as I described, że cexpr zależy nom tak:
nom = {version = "^3", features = ["verbose-errors"] }
podczas nmea opisuje zależność takiego:
nom = "3.1.0"
Z tylko NMEA jako zależność, Transport buduje nom z jednym zestawem funkcji, podczas gdy Cargo buduje cexpr i nmea przeciw nom z innym zestawem funkcji.
Potrzebuję sposobu, aby zapobiec takiemu niewłaściwemu użyciu skrzynki, którą utrzymuję.
Chciałbym błąd czasu kompilacji, taki jak "`nom` compiled with wrong features"
, lub zmusić Cargo do zbudowania dwóch wariantów nom.
Próbowałem coś takiego w nmea/Cargo.toml
:
nom = { version = "3.1.0", default-features = false }
To nic nie zmienił; nadal występuje błąd czasu kompilacji po połączeniu cexpr i nmea.
Warto w tym przypadku zaangażować osoby o bardziej wyspecjalizowanej wiedzy; może powinieneś rozważyć przesłanie tego pytania do r/rust lub forum użytkowników rdzy, a nawet otwarcie błędu na repozytorium github cargo. –
@ MatthieuM. Wysłałem https: // github.com/rust-lang/charge/issues/4323 jakiś czas temu – fghj