Cargo-edit: Dukungan untuk bekerja dengan fitur

Dibuat pada 20 Jan 2018  ·  5Komentar  ·  Sumber: killercup/cargo-edit

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
cargo-add enhancement help wanted

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 ).

Semua 5 komentar

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat