Format Lain
TOML, YAML, bincode
Format Lain adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 4 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.
Di luar JSON
Inti serde tidak bergantung pada format, sehingga struct yang sama hasil derive dapat digunakan dengan banyak format hanya dengan mengganti crate formatnya.
- TOML untuk konfigurasi
- YAML untuk data yang mudah dibaca manusia
- bincode untuk biner yang ringkas
Satu struct, banyak format
Anda mendefinisikan struct satu kali. Setiap crate format menyediakan padanan to_string / from_str versinya sendiri di atas implementasi Serialize / Deserialize yang sama.
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct Config {
name: String,
port: u16,
}TOML
TOML populer untuk konfigurasi (Cargo.toml sendiri menggunakannya). Crate toml menserialisasi dan mengurainya.
use serde::Serialize;
#[derive(Serialize)]
struct Config { name: String, port: u16 }
fn to_toml(c: &Config) -> String {
toml::to_string(c).unwrap()
}Mengurai TOML
Baca kembali konfigurasi TOML ke dalam struct Anda dengan toml::from_str.
use serde::Deserialize;
#[derive(Deserialize)]
struct Config { name: String, port: u16 }
fn parse(s: &str) -> Config {
toml::from_str(s).unwrap()
}YAML
YAML cocok untuk data yang diedit manusia dan memiliki penyarangan. Gunakan crate seperti serde_yaml dengan bentuk API yang sama.
use serde::Serialize;
#[derive(Serialize)]
struct Config { name: String, port: u16 }
fn to_yaml(c: &Config) -> String {
serde_yaml::to_string(c).unwrap()
}bincode
bincode adalah format biner yang ringkas, cocok untuk penyimpanan sementara atau pengiriman melalui jaringan saat ukuran dan kecepatan penting dan data tidak pernah dibaca manusia.
use serde::Serialize;
#[derive(Serialize)]
struct Config { name: String, port: u16 }
fn to_bytes(c: &Config) -> Vec<u8> {
bincode::serialize(c).unwrap()
}Memilih format
Pilih berdasarkan penggunanya:
- Konfigurasi manusia yang memiliki penyarangan: TOML atau YAML
- API web: JSON
- Penyimpanan/transportasi biner internal: bincode
Memodelkan pilihan format
Keputusan ini hanyalah pemetaan dari kasus penggunaan ke format. Contoh yang dapat dijalankan ini menangkap logika pemilihan tersebut.
fn pick_format(use_case: &str) -> &str {
match use_case {
"config" => "TOML",
"api" => "JSON",
"cache" => "bincode",
_ => "JSON",
}
}
fn main() {
println!("{}", pick_format("config"));
println!("{}", pick_format("cache"));
println!("{}", pick_format("api"));
}Perjalanan pulang-pergi byte
Format biner dapat melakukan perjalanan pulang-pergi: menserialisasi menjadi byte, lalu mendeserialisasi kembali menjadi struct yang sama. Contoh yang dapat dijalankan ini secara konseptual memodelkan perjalanan pulang-pergi berdasarkan panjang byte.
fn encode(name: &str) -> Vec<u8> {
name.as_bytes().to_vec()
}
fn decode(bytes: &[u8]) -> String {
String::from_utf8(bytes.to_vec()).unwrap()
}
fn main() {
let bytes = encode("Alice");
println!("len={}", bytes.len());
println!("back={}", decode(&bytes));
}Keunikan khusus format
Setiap format memiliki kemampuan yang berbeda. TOML tidak mengizinkan null dan memerlukan tabel untuk penyarangan; YAML mendukung jangkar; bincode tidak menjelaskan dirinya sendiri, sehingga kedua sisi harus menggunakan tipe yang sama.
Atribut tetap berlaku
Atribut #[serde(...)] yang telah Anda pelajari (rename, default, skip) berfungsi di semua format, karena atribut tersebut bekerja pada lapisan serde, bukan lapisan format.
use serde::Serialize;
#[derive(Serialize)]
#[serde(rename_all = "kebab-case")]
struct Config { max_connections: u32 }Pemeriksaan Singkat
Uji pemahaman Anda tentang format lainnya.
Rangkuman
Anda telah mempelajari format serde lainnya:
- Satu struct hasil derive dapat digunakan pada TOML, YAML, JSON, dan bincode
- Setiap crate format menyediakan API bergaya
to_string/from_stryang familier - Pilih berdasarkan penggunaannya: konfigurasi, API, atau penyimpanan biner
- Atribut serde berlaku pada setiap format
Dengan demikian, kursus Serde dan rangkaian Rust telah selesai.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Format Lain” gratis?
Ya — teks lengkap “Format Lain” 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 “Format Lain”?
TOML, YAML, bincode 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 4 dari 4.
Berapa lama pelajaran “Format Lain” 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.