pub fn deserialize<'de, D, T>(deserializer: D) -> Result<T, D::Error>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);