序列化 / 二进制格式

use serde::{SerializeDeserialize};
use std::fs::File;
use std::io::prelude::*;

#[derive(SerializeDeserialize, Debug)]
struct Data {    
    text: String,
    num: f32,
    arr: Vec<i32>,
}

fn main() -> std::io::Result<()> {
    let data: Data = Data {
        text: "Hello".to_string(), 
        num: 3.14,
        arr: vec![257], 
    };

    //Write Binary Data
    if let Ok(data_b) = bincode::serialize(&data) {
        let file_path = "data.bin";
        let mut file = File::create(file_path)?;
        file.write_all(&data_b)?;

        //Read Binary Data
        let mut file = File::open(file_path)?;
        let mut data_b2 = Vec::<u8>::new();
        file.read_to_end(&mut data_b2)?;
        let mut cursor = &data_b2[..];    
        let data2: Data = bincode::
            deserialize_from(&mut cursor).unwrap();

        println!("data2 is {:?}", data2);
    }
    Ok(())
}