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 attributes สำหรับการปรับแต่งหากจำเป็น
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
struct จากส่วนก่อนหน้าและทำซีเรียลกลับเป็นรูปแบบ 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
, รองรับโครงสร้างข้อมูลที่ซับซ้อนและให้การกำหนดค่าที่เรียบง่าย, สามารถอ่านได้โดยมนุษย์