xsd_types/value/
g_year.rs

1use chrono::FixedOffset;
2
3use crate::{format_timezone, Datatype, DisplayYear, ParseXsd, XsdValue};
4use core::fmt;
5
6#[derive(Debug, Clone, Copy)]
7pub struct GYear {
8	year: i32,
9	offset: Option<FixedOffset>,
10}
11
12impl GYear {
13	pub fn new(year: i32, offset: Option<FixedOffset>) -> Self {
14		Self { year, offset }
15	}
16}
17
18impl XsdValue for GYear {
19	fn datatype(&self) -> Datatype {
20		Datatype::GYear
21	}
22}
23
24impl ParseXsd for GYear {
25	type LexicalForm = crate::lexical::GYear;
26}
27
28impl fmt::Display for GYear {
29	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
30		DisplayYear(self.year).fmt(f)?;
31		format_timezone(self.offset, f)
32	}
33}