deserialize

Function deserialize 

Source
pub fn deserialize<'de, D, T>(deserializer: D) -> Result<T, D::Error>
where D: Deserializer<'de>, T: FixedWidth + Deserialize<'de>,
Expand description

Deserialization helper for type that implements FixedWidth and Deserialize.

ยงExample

use serde_derive::Deserialize;
use serde;
use fixed_width::{FieldSet, FixedWidth};

#[derive(Debug, Deserialize)]
pub struct Point {
    x: u8,
    y: u8,
}

impl FixedWidth for Point {
    fn fields() -> FieldSet {
        FieldSet::Seq(vec![
            FieldSet::new_field(0..4),
            FieldSet::new_field(4..8),
        ])
    }
}

#[derive(Debug, Deserialize)]
struct Line {
    #[serde(with = "fixed_width")]
    start: Point,
    #[serde(with = "fixed_width")]
    end: Point,
}

impl FixedWidth for Line {
    fn fields() -> FieldSet {
        FieldSet::Seq(vec![
            FieldSet::new_field(0..8),
            FieldSet::new_field(8..16),
        ])
    }
}

let s = "   0   1 253 254";
let line: Line = fixed_width::from_str(s).unwrap();

assert_eq!(line.start.x, 0);
assert_eq!(line.start.y, 1);
assert_eq!(line.end.x, 253);
assert_eq!(line.end.y, 254);