pragma-common 0.7.0

Pragma Common types for Rust
Documentation
use thiserror::Error;

#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum FuturesContractParseError {
    #[error("futures contract symbol is empty")]
    Empty,
    #[error("futures contract symbol is missing a month code")]
    MissingMonthCode,
    #[error("futures contract root is invalid: {0}")]
    InvalidRoot(String),
    #[error("invalid futures month code: {0}")]
    InvalidMonthCode(char),
    #[error("futures contract symbol is missing a year suffix")]
    MissingYear,
    #[error("invalid futures year suffix: {0}")]
    InvalidYear(String),
    #[error(
        "futures contract {contract} is too far in the past for reference date {reference_date}"
    )]
    TooFarInPast {
        contract: String,
        reference_date: String,
    },
    #[error(
        "futures contract {contract} is too far in the future for reference date {reference_date}"
    )]
    TooFarInFuture {
        contract: String,
        reference_date: String,
    },
}