xsd_types/value/
g_year.rs1use 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}