Rust:
עבודה עם YAML
איך לעשות:
Rust אינו תומך ב-YAML בספריית הסטנדרט שלו, ולכן אנו בדרך כלל משתמשים ב-crates צד שלישי כמו serde
(לסידור וניתוח נתונים) בשילוב עם serde_yaml
.
ראשית, הוסף תלות לקובץ Cargo.toml
שלך:
[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_yaml = "0.8"
עכשיו, בואו נראה איך לנתח מחרוזת YAML למבנה Rust ולסדר מחדש מבנה Rust למחרוזת YAML.
ניתוח YAML למבני Rust
הגדר מבנה Rust שמשקף את הנתונים שאתה מצפה לקבל ב-YAML. השתמש בתכונות Serde להתאמה אישית אם נחוץ.
use serde::{Deserialize, Serialize};
use serde_yaml;
#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct Config {
name: String,
durability: i32,
owner: Owner,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct Owner {
name: String,
age: i32,
}
fn main() {
let yaml_data = "
name: Shield
durability: 300
owner:
name: Steve
age: 25
";
let deserialized_config: Config = serde_yaml::from_str(yaml_data).unwrap();
println!("{:?}", deserialized_config);
}
דוגמת פלט לאחר הרצת הקוד Rust לעיל תהיה:
Config { name: "Shield", durability: 300, owner: Owner { name: "Steve", age: 25 } }
סידור מבני Rust ל-YAML
דוגמה זו לוקחת את המבנה Config
מהסעיף הקודם וסודרת אותו בחזרה לפורמט YAML.
fn main() {
let config = Config {
name: String::from("Axe"),
durability: 120,
owner: Owner {
name: String::from("Alex"),
age: 30,
},
};
let serialized_yaml = serde_yaml::to_string(&config).unwrap();
println!("{}", serialized_yaml);
}
הפלט הצפוי יהיה מחרוזת מסודרת בפורמט YAML:
---
name: Axe
durability: 120
owner:
name: Alex
age: 30
הקטעים האלו מדגימים כיצד לשלב ניתוח וייצור של YAML באפליקציות Rust שלכם ביעילות, באמצעות ה-crates הפופולריים serde
ו-serde_yaml
, מתאימים למבני נתונים מורכבים ומספקים תצורות פשוטות וקריאות לאדם.