[−][src]Module listinfo::de
Serde Deserializer
implementation.
Serde deserialization support.
listinfo-rs supports a higher-level deserialization API with serde. This must first be enabled in Cargo.toml
listinfo = { version = "0.3", features = ["deserialize"] }
Usage
listinfo-rs can be use as any other Serde deserializer
use serde::Deserialize; use listinfo::de::from_str; #[derive(Debug, Deserialize)] struct Header { name: String, description: String, version: String, comment: String, } #[derive(Debug, Deserialize)] struct Game { name: String, releaseyear: u32, developer: String, rom: Vec<Rom>, } #[derive(Debug, Deserialize)] struct Rom { name: String, size: u64, // Supports serialize hex strings to byte arrays #[serde(with = "serde_bytes")] crc: Vec<u8>, #[serde(with = "serde_bytes")] md5: Vec<u8>, #[serde(with = "serde_bytes")] sha1: Vec<u8>, } #[derive(Debug, Deserialize)] struct CaveStory { clrmamepro: Header, game: Vec<Game>, } fn deserialize_cave_story() { const CAVE_STORY: &str = r#"clrmamepro ( name "Cave Story" description "Cave Story" version 20161204 comment "libretro | www.libretro.com" ) game ( name "Cave Story (En)" description "Cave Story (En)" developer "Studio Pixel" releaseyear "2004" rom ( name "Doukutsu.exe" size 1478656 crc c5a2a3f6 md5 38695d3d69d7a0ada8178072dad4c58b sha1 bb2d0441e073da9c584f23c2ad8c7ab8aac293bf ) ) "#; let cave_story = from_str::<CaveStory>(CAVE_STORY).unwrap(); assert_eq!(cave_story.clrmamepro.name, "Cave Story"); assert_eq!(cave_story.game.first().unwrap().rom.first().unwrap().name, "Doukutsu.exe"); assert_eq!(cave_story.game.first().unwrap().rom.first().unwrap().size, 1478656); assert_eq!(cave_story.game.first().unwrap().rom.first().unwrap().crc, &[0xc5, 0xa2, 0xa3, 0xf6]); }
Structs
Deserializer | A deserializer for a ListInfo DAT. |
FragmentDeserializer | A deserializer for a ListInfo DAT fragment. |
Functions
from_document | Deserialize from a parsed |
from_fragment | Deserialize a ListInfo fragment from a parsed |
from_str | Deserialize from the string contents of a ListInfo DAT. |