Rust

Serde และการ Serialization

serde traits, derive macros, JSON/YAML/TOML, การ (de)serialization แบบกำหนดเอง, lifetimes ด้วย Cow, ประสิทธิภาพ

20 คำถามสัมภาษณ์·
Mid-Level
1

บทบาทหลักของ crate serde ใน Rust คืออะไร?

คำตอบ

Serde เป็นเฟรมเวิร์กสำหรับ serialization และ deserialization แบบทั่วไปสำหรับ Rust ชื่อของมันมาจาก "SERialize DEserialize" ช่วยให้สามารถแปลงโครงสร้างข้อมูล Rust ไปและกลับจากรูปแบบข้อมูลต่าง ๆ (JSON, YAML, TOML ฯลฯ) ได้อย่างมีประสิทธิภาพและ type-safe Serde ใช้ระบบ trait ของ Rust เพื่อมอบ abstraction ที่ไม่มีต้นทุนในเวลารันไทม์

2

ไวยากรณ์ที่ถูกต้องในการเปิดใช้งาน serialization อัตโนมัติบน struct ด้วย serde คืออะไร?

คำตอบ

แอตทริบิวต์ #[derive(Serialize, Deserialize)] สร้างการ implement ของ trait Serialize และ Deserialize สำหรับ struct โดยอัตโนมัติ procedural macro นี้วิเคราะห์โครงสร้างของฟิลด์และสร้างโค้ดที่จำเป็นในเวลาคอมไพล์ คุณต้อง import trait จาก serde ด้วย use serde::{Serialize, Deserialize}

3

ควรใช้ฟังก์ชันใดในการแปลง struct ของ Rust เป็นสตริง JSON ด้วย serde_json?

คำตอบ

ฟังก์ชัน serde_json::to_string() แปลงค่าที่ implement Serialize ให้เป็นสตริง JSON มันคืนค่า Result<String, Error> เพราะการ serialization อาจล้มเหลวในบางกรณี สำหรับเอาต์พุตที่จัดรูปแบบด้วยการเยื้อง ให้ใช้ serde_json::to_string_pretty() หากต้องการเขียนลงใน Writer โดยตรง ให้ใช้ serde_json::to_writer()

4

จะ deserialize สตริง JSON เป็น struct ของ Rust ด้วย serde_json ได้อย่างไร?

5

ควรใช้แอตทริบิวต์ serde ใดในการเปลี่ยนชื่อฟิลด์ระหว่างการ serialization?

+17 คำถามสัมภาษณ์

เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี