Sepanjang Course ini kita hampir selalu bertumpu pada standard library: I/O berkas, koleksi, hingga penanganan error ditulis tanpa satu pun dependency eksternal. Begitu kita membangun program sungguhan, kebutuhan melebar dengan cepat — klien HTTP, parser JSON, format tanggal, pengacakan angka — dan menulis semuanya dari nol bukan lagi pilihan yang masuk akal. crates.io menjawab kebutuhan tersebut sebagai registry publik tempat komunitas mempublikasikan puluhan ribu crate siap pakai yang bisa kita tambahkan dengan satu perintah cargo add. Persoalan kita lalu berubah: bukan lagi “apakah crate-nya ada”, melainkan “crate mana yang layak dipercaya”. Chapter ini melatih keterampilan kedua — mencari, membandingkan, dan menilai — sebelum kita menyerahkan sebagian tanggung jawab program kita ke kode orang lain.
crates.io sebagai Etalase Ekosistem #
crates.io adalah registry resmi yang dijaga tim Rust. Setiap crate di dalamnya memiliki nama unik, daftar versi, halaman deskripsi, dan tautan ke repository penulisnya — struktur yang sudah kita lihat dari sisi konsumen pada Section Crates dan Cargo. Registry juga mengikat seluruh proses teknis: cargo add menuliskan dependency ke Cargo.toml, cargo build mengunduh kode sumber ke cache lokal, dan cargo publish mengunggah crate buatan kita sendiri kembali ke registry yang sama.
Satu layanan pendamping membuat etalase ini lengkap: docs.rs. Setiap crate yang dipublikasikan ke crates.io otomatis dibangun dokumentasinya oleh docs.rs, sehingga tautan dokumentasi setiap versi tersedia tanpa usaha penulisnya. Kombinasi crates.io sebagai katalog dan docs.rs sebagai rak dokumentasi berarti kita bisa menilai sebuah crate sepenuhnya dari browser sebelum menulis satu baris kode.
Mencari Crate dengan Kata Kunci dan Kategori #
Kotak pencarian di halaman depan crates.io menerima kata kunci bebas — misalnya “http client”, “json”, atau “cli parser” — dan menampilkan hasil lengkap dengan nama, deskripsi singkat, serta angka unduhan tiap kandidat. Hasil pencarian mengutamakan relevansi nama dan deskripsi, bukan sekadar popularitas, sehingga kata kunci yang tepat menentukan kualitas kandidat yang muncul.
Setiap crate juga diberi keywords dan categories oleh penulisnya. Category mengelompokkan crate ke domain seperti Command line utilities, Web programming, atau Database interfaces, dan halaman tiap category dapat dijelajahi seperti direktori. Penelusuran lewat category berguna ketika kita belum tahu kata kunci persis yang dipakai komunitas untuk kebutuhan kita. Pendekatan ketiga yang sama berguna: melihat dependency dari proyek open source yang kita kagumi, atau memeriksa daftar kurasi seperti awesome-rust di GitHub yang disusun komunitas.
Filter pertama yang paling murah adalah deskripsi dan README. Crate yang menjelaskan untuk apa dirinya dibuat, memberi contoh kode pada halaman depan, dan menyebutkan batas dukungannya menghemat waktu penilaian berikutnya. Crate dengan deskripsi satu kalimat samar biasanya memang tidak layak dilanjutkan ke tahap berikutnya.
Menilai Kesehatan Sebuah Crate #
Halaman crate menyimpan sinyal kesehatan yang bisa kita baca secara berurutan. Tabel berikut merangkum sinyal-sinyal utama beserta cara membacanya:
| Sinyal | Cara Membaca |
|---|---|
| Unduhan total dan unduhan terbaru | Indikator popularitas historis dan pemakaian aktif saat ini |
| Tanggal rilis terakhir | Kefrisinan perawatan; semakin lama semakin patut dicurigai |
| Riwayat versi | Disiplin semver dan kecepatan perbaikan bug |
| Dokumentasi docs.rs | Kelengkapan referensi API dan contoh kode |
| Aktivitas repository | Isu dan pull request yang direspons, bukan sekadar jumlahnya |
| Lisensi | Kompatibilitas hukum dengan proyek kita |
| Jumlah dependency | Pengaruh ke waktu kompilasi dan permukaan audit |
Membaca Angka Unduhan #
crates.io menampilkan dua angka unduhan untuk setiap crate: unduhan total sejak crate pertama kali dirilis, dan unduhan terbaru yang menghitung periode 90 hari ke belakang. Kedua angka tersebut menjawab pertanyaan berbeda. Unduhan total mengukur akumulasi popularitas historis, sedangkan unduhan 90 hari mengukur pemakaian aktif saat ini. Crate dengan total besar tetapi unduhan terbaru kecil kemungkinan sedang ditinggalkan penggunanya; crate dengan total kecil tetapi unduhan terbaru yang terus tumbuh justru sedang naik daun.
Kedua angka tersebut tetap indikator, bukan penghakim mutu. Angka unduhan menghitung setiap pengambilan crate oleh cargo — termasuk build otomatis di server CI dan environment Docker yang di-rebuild setiap hari — sehingga angka besar tidak berarti pengguna manusia sebanyak itu. Perbandingan antar crate pada domain yang sama bermanfaat, tetapi keputusan akhir sebaiknya ditopang sinyal lain pada tabel di atas.
Riwayat Rilis dan Umur Crate #
Tab versi pada halaman crate mencantumkan setiap rilis beserta tanggalnya. Crate yang sehat umumnya menunjukkan rilis berkala: perbaikan bug dalam hitungan minggu atau bulan, bukan jeda bertahun-tahun. Umur panjang yang disertai perawatan berkelanjutan adalah kombinasi terbaik — crate tersebut telah melewati banyak siklus perkembangan ekosistem dan tetap dirawat.
Pola penomoran versi juga layak dibaca dengan aturan semver yang sudah kita bahas pada Section Crates dan Cargo. Versi major yang melompat-lompat menandakan API belum stabil atau desain yang berganti arah. Versi yang masih berkutat di angka 0.x sah-sah saja — banyak crate populer bertahun-tahun di rentang itu — tetapi kita perlu bersiap memperbarui kode ketika penulisnya menaikkan versi minor, karena konvensi semver memperlakukan fase 0.x sebagai masa pencarian bentuk.
Dokumentasi di docs.rs #
Dokumentasi yang dibangun docs.rs menampilkan seluruh item publik sebuah crate persis seperti dokumentasi standard library. Dua hal layak diperiksa di sana. Pertama, apakah item-item utama punya penjelasan dan contoh — crate tanpa contoh memaksa kita membaca kode sumber hanya untuk memahami pola pemakaian dasar. Kedua, apakah contoh pada doc comment ditulis cukup lengkap untuk dijalankan sebagai doctest, karena contoh yang diuji bersama crate jarang kedaluwarsa.
docs.rs juga membangun dokumentasi untuk setiap versi dan setiap kombinasi features. Jika crate menyediakan banyak feature flags — mekanisme yang kita bahas pada Chapter Fitur Features — dokumentasi tiap kombinasi memberi tahu item mana yang aktif dan mana yang tidak tanpa harus mencoba kompilasi satu per satu.
Lisensi dan Keamanan #
Kebiasaan ekosistem Rust adalah lisensi ganda MIT OR Apache-2.0 — penulis memberi kita hak memilih salah satu dari dua lisensi longgar tersebut. Kedua lisensi mengizinkan pemakaian komersial tanpa biaya, sehingga kebanyakan proyek tidak menghadapi hambatan. Tetap biasakan memeriksa field License di halaman crate sebelum memakainya di produk: lisensi GPL atau AGPL menuntut kewajiban penyebaran kode yang bisa bertabrangan dengan model bisnis kita, dan keputusan jenis ini bukan keputusan teknis semata.
Untuk keamanan, komunitas memelihara RustSec — basis data advisory untuk celah keamanan pada crate — beserta alat cargo-audit yang memeriksa dependency proyek kita terhadap basis data tersebut. Memeriksa crate kandidat di basis data RustSec sebelum adopsi adalah kebiasaan murah dengan manfaat besar, terutama untuk crate yang menyentuh jaringan, kriptografi, atau parsing format berkas.
Daftar Periksa Sebelum Menambahkan Dependency #
Sebelum mengetik cargo add, mari kita jalankan daftar periksa ringkas berikut:
- Standard library atau crate yang sudah terpasang belum menyediakan kebutuhan tersebut.
- Unduhan 90 hari terakhir terlihat hidup dibanding unduhan total.
- Rilis terakhir berada dalam rentang waktu yang wajar untuk domain crate tersebut.
- Dokumentasi docs.rs lengkap dan memuat contoh pemakaian.
- Isu dan pull request di repository mendapat respons dari penulis.
- Lisensi kompatibel dengan rencana distribusi proyek kita.
- Jumlah dependency langsung masuk akal; features yang tidak terpakai dapat dimatikan.
Ringkasan #
crates.io menyediakan katalog dan docs.rs menyediakan dokumentasi untuk setiap versi — dua etalase yang cukup untuk menilai crate dari browser. Angka unduhan dibaca sebagai pola dua dimensi (total versus 90 hari terakhir), riwayat rilis dibaca dengan kacamata semver, dan lisensi diperiksa sebelum crate menyentuh produk. Keterampilan menilai ini akan dipakai terus-menerus pada Chapter-Chapter berikutnya, karena mulai sekarang kita akan menambahkan crate sungguhan ke proyek sungguhan — dimulai dari dua crate yang paling sering muncul di proyek Rust modern: anyhow dan thiserror.