use core::option::Option; use crate::useflag::UseFlag; use get::Get; pub mod parsers; #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum Blocker { Weak, Strong, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum VersionOperator { Lt, Gt, LtEq, GtEq, Roughly, } #[derive(Clone, Debug, PartialEq, Eq, Get)] pub struct Category(#[get(method = "get")] String); #[derive(Clone, Debug, PartialEq, Eq, Get)] pub struct Name(#[get(method = "get")] String); #[derive(Clone, Debug, Get)] pub struct VersionNumber(#[get(method = "get")] String); #[derive(Clone, Copy, Debug)] pub enum VersionSuffixKind { Alpha, Beta, Pre, Rc, P, } #[derive(Clone, Debug, Get)] pub struct VersionSuffix { kind: VersionSuffixKind, number: Option, } #[derive(Clone, Debug, Get)] pub struct Version { numbers: Vec, letter: Option, suffixes: Vec, rev: Option, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum SlotOperator { Eq, Star, } #[derive(Clone, Debug, PartialEq, Eq, Get)] pub struct SlotName(#[get(method = "name")] String); #[derive(Clone, Debug, PartialEq, Eq, Get)] pub struct Slot { slot: Option, sub: Option, operator: Option, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum UseDepNegate { Minus, Exclamation, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum UseDepSign { Enabled, Disabled, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum UseDepCondition { Eq, Question, } #[derive(Clone, Debug, PartialEq, Eq, Get)] pub struct UseDep { negate: Option, flag: UseFlag, sign: Option, condition: Option, } #[derive(Clone, Debug, Get)] pub struct Atom { blocker: Option, version_operator: Option, category: Category, name: Name, version: Option, slot: Option, usedeps: Vec, }