Saya memiliki dua fitur yang ingin saya usulkan:
Yang pertama adalah kemampuan untuk menentukan fitur saat menambahkan dependensi, dengan flag -F
atau --feature
yang dapat ditentukan beberapa kali:
$ cargo add serde_json --feature preserve_order
Yang kedua adalah saat menambahkan dependensi, output konsol harus mencantumkan fitur yang tersedia. Saya baru-baru ini menerapkan serialisasi saya sendiri untuk beberapa jenis, karena saya tidak menyadari bahwa dukungan serde adalah fitur yang tersedia. Sesuatu seperti berikut ini akan menyenangkan:
$ cargo add nalgebra
Adding nalgebra v0.13.1 to dependencies
Optional features:
- arbitrary
- serde-serialize
- abomonation-serialize
- debug
Terima kasih untuk sarannya!
Saya kira fitur daftar telah diterapkan beberapa waktu lalu , tetapi kami telah menghapus subperintah cargo list
di #130.
Sepertinya tambahan yang berguna bagi saya, mari kita lihat apa yang dipikirkan @killercup dan @bjgill .
Yang tidak jelas adalah apakah kita harus membuat daftar fitur alias juga, misalnya di semver's Cargo.toml fitur serde
tidak terdaftar secara langsung, jadi dalam contoh Anda hasilnya akan menjadi seperti ( num-complex/serde
adalah tidak terdaftar):
$ cargo add nalgebra --features "abomonation-serialize"
Adding nalgebra v0.13.1 to dependencies
Features:
+ abomonation
+ abomonation-serialize
- arbitrary
- debug
- serde
- serde-derive
- serde-serialize
Juga kita harus mengikuti kargo dalam menentukan beberapa fitur.
Poin bagus tentang sintaks untuk menentukan banyak fitur.
Terkadang saya melihat dependensi opsional yang mungkin tidak akan berfungsi dengan baik jika Anda mengaktifkannya satu per satu. Misalnya, serde
dan serde-derive
dapat dikelompokkan bersama dalam satu fitur seperti dalam contoh tersebut.
Kecenderungan saya adalah membuat daftar fitur dan dependensi opsional itu sendiri, tetapi dengan beberapa lekukan untuk menunjukkan bagaimana mereka dikelompokkan bersama. (Saya akan membuat contoh jika saya tidak menggunakan ponsel saya)
Saya akan senang untuk menerapkan ini. Saya melihat kodenya, dan sepertinya cukup mudah.
Ada pembaruan tentang ini?
Bagaimana tentang:
cargo feature <crate> +<feature1> -<feature2>
(menambahkan fitur1 ke peti, dan menghapus fitur2).
Jadi itu akan menjadi:
cargo feature serde_json +preserve_order
Saya kira, menghapus fitur jarang dilakukan (akan diterima jika harus menggunakan editor untuk itu), jadi mungkin sintaks berikut akan lebih baik:
cargo fadd <crate> <feature1> <feature2> ..
Begitu:
cargo fadd serde_json preserve_order
Sintaksnya tidak boleh terlalu bertele-tele (tidak perlu menulis --feature
).
Tanpa mempertimbangkan fitur default, sintaks ini konsisten dengan format features.*[*]
dari Cargo.toml dan harus kompatibel dengan versi sebelumnya:
# this appends `serde = {version = "x.y.z", features = ["derive"]}`,
# or edits the existing entry with the feature added
cargo add serde/derive
# if existing entry is serde = {version = "x.y.z", features = ["derive"]}`,
# this will only remove the feature without removing serde
# if the existing entry does not have the derive feature, we abort with eror
cargo rm serde/derive
# this adds any missing features among serde/derive and serde/rc without errors
# (but might warn if exists)
cargo add serde/derive serde/rc
Adapun fitur default, saya pikir masuk akal bagi siapa saja yang ingin memiliki daftar argumen yang lebih kompleks untuk berada dalam perintah terpisah.
Komentar yang paling membantu
Ada pembaruan tentang ini?
Bagaimana tentang:
cargo feature <crate> +<feature1> -<feature2>
(menambahkan fitur1 ke peti, dan menghapus fitur2).Jadi itu akan menjadi:
cargo feature serde_json +preserve_order
Saya kira, menghapus fitur jarang dilakukan (akan diterima jika harus menggunakan editor untuk itu), jadi mungkin sintaks berikut akan lebih baik:
cargo fadd <crate> <feature1> <feature2> ..
Begitu:
cargo fadd serde_json preserve_order
Sintaksnya tidak boleh terlalu bertele-tele (tidak perlu menulis
--feature
).