0Pricing
Learn Rust Coding · Pelajaran

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_str yang 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.

Semua pelajaran dalam kursus ini

  1. Serialisasi dan Deserialisasi
  2. Bekerja dengan JSON
  3. Serialisasi Kustom
  4. Format Lain
← Kembali ke Learn Rust Coding