Serialisasi dan Deserialisasi
Makro derive
Serialisasi dan Deserialisasi adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Apa itu Serde?
Serde (SERialize/DEserialize) adalah kerangka kerja Rust untuk mengonversi struktur data dari dan ke format seperti JSON, YAML, dan lainnya.
- Inti yang tidak bergantung pada format, ditambah crate format
- Digerakkan oleh makro derive
Menambahkan serde
Tambahkan serde dengan fitur derive, serta crate format seperti serde_json. Langkah ini mengubah Cargo.toml.
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"Menerapkan derive pada trait
Beri anotasi pada struct dengan #[derive(Serialize, Deserialize)] agar dapat dikonversi. Setiap field juga harus dapat diserialisasi.
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct User {
id: u32,
name: String,
}Serialize berarti menjadi suatu format
Serialize mengubah nilai menjadi byte/teks dalam suatu format. Struct tidak mengetahui format yang digunakan; crate formatlah yang menentukannya.
Deserialize berarti dari suatu format
Deserialize mengurai teks/byte kembali menjadi nilai Rust, sekaligus memvalidasi tipe dan field yang diperlukan.
Memodelkan serialize secara manual
Untuk membangun pemahaman, berikut serializer yang ditulis manual untuk struct sederhana. serde dapat menghasilkan kode seperti ini untuk Anda.
struct User { id: u32, name: String }
fn serialize(u: &User) -> String {
format!("id={};name={}", u.id, u.name)
}
fn main() {
let u = User { id: 7, name: "Alice".to_string() };
println!("{}", serialize(&u));
}Memodelkan deserialize secara manual
Berikut kebalikannya: mengurai teks kembali menjadi struct. Kode yang dihasilkan serde melakukan ini secara andal di berbagai format.
struct User { id: u32, name: String }
fn deserialize(s: &str) -> User {
let parts: Vec<&str> = s.split(',').collect();
let id = parts[0].parse().unwrap();
let name = parts[1].to_string();
User { id, name }
}
fn main() {
let u = deserialize("42,Bob");
println!("{} {}", u.id, u.name);
}Derive pada enum
Enum juga dapat digunakan. Secara default, setiap varian diserialisasi berdasarkan namanya, dengan data apa pun ditempatkan di dalamnya.
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
enum Shape {
Circle { radius: f64 },
Square { side: f64 },
}Struktur bertingkat
serde melakukan rekursi secara otomatis. Struct yang berisi struct turunan lain atau Vec dapat langsung digunakan.
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct Address { city: String }
#[derive(Serialize, Deserialize)]
struct Person {
name: String,
addresses: Vec<Address>,
}Hanya Serialize atau hanya Deserialize
Anda dapat menurunkan hanya satu trait. Tipe respons API mungkin hanya berupa Serialize; tipe permintaan masuk hanya berupa Deserialize.
use serde::Serialize;
#[derive(Serialize)]
struct ApiResponse {
status: u16,
message: String,
}Persyaratan derive
Setiap tipe field harus mengimplementasikan trait yang Anda turunkan. Tipe dan koleksi standar sudah melakukannya; tipe khusus memerlukan derive-nya sendiri.
use serde::Serialize;
#[derive(Serialize)]
struct Inner { x: i32 }
#[derive(Serialize)]
struct Outer { inner: Inner }Pemeriksaan Singkat
Uji pemahaman Anda tentang serialize dan deserialize.
Rangkuman
Anda telah mempelajari dasar-dasar serde:
- serde adalah kerangka kerja serialisasi dan deserialisasi yang tidak bergantung pada format
#[derive(Serialize, Deserialize)]menghasilkan kode konversi- Dapat digunakan pada struct, enum, dan tipe bertingkat
- Anda dapat menurunkan hanya satu arah jika sesuai
Selanjutnya: bekerja dengan JSON melalui serde_json.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Serialisasi dan Deserialisasi” gratis?
Ya — teks lengkap “Serialisasi dan Deserialisasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Serialisasi dan Deserialisasi”?
Makro derive Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?
Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Serialisasi dan Deserialisasi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?
Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Serialisasi dan Deserialisasi
- Bekerja dengan JSON
- Serialisasi Kustom
- Format Lain