Cargo: `--no-default-features` tidak diterapkan pada dependensi

Dibuat pada 11 Agu 2015  ·  3Komentar  ·  Sumber: rust-lang/cargo

Bayangkan saya sedang mengerjakan MyCrate , yang bergantung pada crate A , yang memiliki fitur default X .
Jika saya mengkompilasi MyCrate dengan --no-default-features , peti A masih dibangun dengan fitur X diaktifkan.

Ini menjengkelkan, tetapi mungkin untuk mengatasinya dengan menggunakan Cargo.toml seperti:

[dependencies.A]
version = "*"
default-features = false

Namun, solusi ini tidak bekerja ketika A bergantung pada peti lain B yang memiliki fitur default sendiri. Dalam hal ini, tampaknya tidak mungkin untuk menonaktifkan fitur default B . Dengan kata lain, tampaknya tidak mungkin untuk menonaktifkan fitur default dari ketergantungan tidak langsung.

Kasus motivasi khusus saya adalah libc tidak perlu bergantung pada libstd ketika digunakan melalui cargo .

Komentar yang paling membantu

@alexcrichton :
Jadi, apakah setiap peti seharusnya menyertakan [dependencies.*] default-features = false hanya agar pengguna akhir dapat memilih untuk keluar dari beberapa fitur bersarang? Itu tampaknya agak tumpul.

Semua 3 komentar

Inilah sebabnya mengapa Cargo memungkinkan Anda untuk mengekspor kembali fitur dari dependensi di peti utama itu sendiri. Dependensi dimaksudkan sebagai detail implementasi pribadi alih-alih antarmuka publik, dan jika Anda ingin fitur tersebut diekspor, Anda harus secara eksplisit memilih untuk melakukannya.

@alexcrichton :
Jadi, apakah setiap peti seharusnya menyertakan [dependencies.*] default-features = false hanya agar pengguna akhir dapat memilih untuk keluar dari beberapa fitur bersarang? Itu tampaknya agak tumpul.

Ya, itu niatnya. Menjadikan sesuatu sebagai fitur default berarti fitur itu akan diaktifkan hampir sepanjang waktu, jadi fitur ini tidak selalu dimaksudkan untuk semua bagian fungsionalitas opsional.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat