Saya menghabiskan beberapa minggu terakhir mempelajari encoder TLV di Rust: type length value, trik tertua untuk mengemas data supaya bisa bertambah tanpa merusak pembaca lama. Setelah kupikirkan untuk Dusk, barulah alasannya “klik”. Rangkaian seperti @Dusk mengalirkan pesan ke jaringan tanpa henti—rekan-rekan yang saling berbisik tentang kontrak, memanggil dompet, menyinkronkan semuanya. Semuanya butuh format yang tetap bertahan saat seseorang menambahkan field baru dua tahun dari sekarang.
Rust membuat bagian yang menjengkelkan hampir terasa membosankan, dan memang itu tujuan utamanya. Pengecekan batas. Menolak untuk percaya pada byte panjang yang mengklaim bisa dibaca 4GB.
Parser yang panik saat diberi input sampah adalah parser yang tidak bisa dijalankan di jaringan saat byte acak muncul tanpa diundang. Saya tetap menggunakan irisan sederhana \u0026[u8] tanpa menyalin kecuali benar-benar perlu, dan mengandalkan enum untuk byte tipe agar kompiler menangkap setiap kasus yang mungkin kulupakan.
Jangan lewati kode dorong byte yang terlihat “jelek”. Tulis itu dulu, dan tulis dengan paranoid. Yang lain yang kamu bangun bergantung pada fakta bahwa itu tidak berbohong padamu. #dusk
$DUSK
Rust membuat bagian yang menjengkelkan hampir terasa membosankan, dan memang itu tujuan utamanya. Pengecekan batas. Menolak untuk percaya pada byte panjang yang mengklaim bisa dibaca 4GB.
Parser yang panik saat diberi input sampah adalah parser yang tidak bisa dijalankan di jaringan saat byte acak muncul tanpa diundang. Saya tetap menggunakan irisan sederhana \u0026[u8] tanpa menyalin kecuali benar-benar perlu, dan mengandalkan enum untuk byte tipe agar kompiler menangkap setiap kasus yang mungkin kulupakan.
Jangan lewati kode dorong byte yang terlihat “jelek”. Tulis itu dulu, dan tulis dengan paranoid. Yang lain yang kamu bangun bergantung pada fakta bahwa itu tidak berbohong padamu. #dusk
$DUSK

