Sau khi tìm ra cargo build of the same code: spurious compile time errors?, tôi muốn biết làm thế nào để ngăn chặn một vấn đề như vậy:Làm cách nào để ngăn Hàng hóa sáp nhập cùng một sự phụ thuộc với các tính năng khác nhau?
$ 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
tôi xóa/thêm phụ thuộc mà không cần bất kỳ sửa đổi mã và điều này ảnh hưởng đến kết quả xây dựng.
Nguồn vấn đề, as I described, là cexpr phụ thuộc vào nom như thế này:
nom = {version = "^3", features = ["verbose-errors"] }
khi nmea mô tả sự phụ thuộc như thế này:
nom = "3.1.0"
Chỉ với NMEA như một sự phụ thuộc, hàng hóa xây dựng nom với một tập hợp các tính năng, trong khi Cargo xây dựng cexpr và nmea dựa trên danh nghĩa với một tập hợp các tính năng khác.
Tôi muốn một cách để ngăn chặn việc sử dụng sai phạm vi của các bitea mà tôi duy trì.
Tôi muốn có lỗi thời gian biên dịch như "`nom` compiled with wrong features"
hoặc buộc Cargo xây dựng hai biến thể của nom.
tôi đã cố gắng điều như vậy trong nmea/Cargo.toml
:
nom = { version = "3.1.0", default-features = false }
này thay đổi gì; vẫn còn một lỗi thời gian biên dịch khi cexpr và nmea được kết hợp.
Có thể có giá trị liên quan đến những người có kiến thức chuyên sâu hơn ở đây; có lẽ bạn nên cân nhắc việc đăng câu hỏi lên r/rust hoặc diễn đàn người dùng rỉ sét, hoặc thậm chí mở một lỗi trên kho lưu trữ github hàng hóa. –
@MatthieuM. Tôi đã đăng https: // github.com/rust-lang/charge/issues/4323 một số thời gian trước – fghj