Diğer Biçimler
TOML, YAML, bincode
Diğer Biçimler, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.
JSON'un ötesi
serde'nin çekirdeği biçimden bağımsızdır; bu nedenle aynı türetilmiş yapı, yalnızca biçim kasasını değiştirerek birçok biçimle çalışır.
- Yapılandırma için TOML
- İnsan dostu veriler için YAML
- Sıkıştırılmış ikili veriler için bincode
Tek yapı, birçok biçim
Yapıyı bir kez tanımlarsınız. Her biçim kasası, aynı Serialize / Deserialize uygulamaları üzerinde kendi to_string / from_str eşdeğerlerini sunar.
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize)]
struct Config {
name: String,
port: u16,
}TOML
TOML, yapılandırma için popülerdir (Cargo.toml dosyasının kendisi de bunu kullanır). toml kasası bunu serileştirir ve ayrıştırır.
use serde::Serialize;
#[derive(Serialize)]
struct Config { name: String, port: u16 }
fn to_toml(c: &Config) -> String {
toml::to_string(c).unwrap()
}TOML ayrıştırma
toml::from_str ile bir TOML yapılandırmasını yeniden yapınıza okuyun.
use serde::Deserialize;
#[derive(Deserialize)]
struct Config { name: String, port: u16 }
fn parse(s: &str) -> Config {
toml::from_str(s).unwrap()
}YAML
YAML, iç içe yapıya sahip ve insanlar tarafından düzenlenen veriler için uygundur. Aynı API biçimine sahip serde_yaml gibi bir kasa kullanın.
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, boyut ve hızın önemli olduğu, insanların okumayacağı önbellekleme veya ağ üzerinden gönderim işlemleri için ideal, sıkıştırılmış bir ikili biçimdir.
use serde::Serialize;
#[derive(Serialize)]
struct Config { name: String, port: u16 }
fn to_bytes(c: &Config) -> Vec<u8> {
bincode::serialize(c).unwrap()
}Biçim seçme
Kullanıcı kitlesine göre seçim yapın:
- İç içe yapıya sahip insan tarafından düzenlenen yapılandırma: TOML veya YAML
- Web API'leri: JSON
- Dahili ikili depolama veya aktarım: bincode
Biçim seçimini modelleme
Karar, kullanım senaryosundan biçime yapılan bir eşlemeden ibarettir. Bu çalıştırılabilir örnek, bu seçim mantığını yakalar.
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"));
}Baytları gidiş-dönüş dönüştürme
İkili biçimler gidiş-dönüş dönüşümünü destekler: baytlara serileştirin, ardından aynı yapıya yeniden serileştirmeden çıkarın. Bu çalıştırılabilir örnek, bayt uzunluğuna dayalı bir gidiş-dönüş kavramını model olarak gösterir.
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));
}Biçime özgü incelikler
Biçimlerin yetenekleri farklıdır. TOML, null değerine izin vermez ve iç içe yapılar için tablolar gerektirir; YAML, çapaları destekler; bincode ise kendini açıklamaz, bu nedenle her iki tarafın da türü paylaşması gerekir.
Öznitelikler hâlâ geçerli
Öğrendiğiniz #[serde(...)] öznitelikleri (rename, default, skip), serde katmanında çalıştıkları ve biçim katmanına bağlı olmadıkları için tüm biçimlerde çalışır.
use serde::Serialize;
#[derive(Serialize)]
#[serde(rename_all = "kebab-case")]
struct Config { max_connections: u32 }Hızlı Kontrol
Diğer biçimleri ne kadar anladığınızı test edin.
Özet
Diğer serde biçimleri hakkında şunları öğrendiniz:
- Türetilmiş tek bir yapı TOML, YAML, JSON ve bincode ile çalışır
- Her biçim kasası, tanıdık
to_string/from_strtarzı API'ler sunar - Kullanıcı kitlesine göre seçim yapın: yapılandırma, API veya ikili depolama
- serde öznitelikleri her biçime uygulanır
Böylece Serde kursu ve Rust serisi tamamlanmış oldu.
Sıkça Sorulan Sorular
“Diğer Biçimler” dersi ücretsiz mi?
Evet — “Diğer Biçimler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.
“Diğer Biçimler” dersinde ne öğreneceğim?
TOML, YAML, bincode Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Diğer Biçimler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.