forked from gentoo-utils/gentoo-utils
derive Hash for Atom and similar types
This commit is contained in:
@@ -12,13 +12,13 @@ use itertools::Itertools;
|
||||
|
||||
mod parsers;
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum Blocker {
|
||||
Weak,
|
||||
Strong,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum VersionOperator {
|
||||
Lt,
|
||||
Gt,
|
||||
@@ -28,19 +28,20 @@ pub enum VersionOperator {
|
||||
Roughly,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Get)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Get)]
|
||||
pub struct Category(#[get(method = "get", kind = "deref")] String);
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Get)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Get)]
|
||||
pub struct Name(#[get(method = "get", kind = "deref")] String);
|
||||
|
||||
#[derive(Clone, Debug, Get)]
|
||||
#[derive(Clone, Debug, Hash, Get)]
|
||||
pub struct VersionNumber(#[get(method = "get", kind = "deref")] String);
|
||||
|
||||
#[derive(Debug, Clone, Get)]
|
||||
#[allow(clippy::derived_hash_with_manual_eq)]
|
||||
#[derive(Debug, Clone, Hash, Get)]
|
||||
struct VersionNumbers(#[get(method = "get", kind = "deref")] Vec<VersionNumber>);
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub enum VersionSuffixKind {
|
||||
Alpha,
|
||||
Beta,
|
||||
@@ -49,19 +50,22 @@ pub enum VersionSuffixKind {
|
||||
P,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Get)]
|
||||
#[allow(clippy::derived_hash_with_manual_eq)]
|
||||
#[derive(Clone, Debug, Hash, Get)]
|
||||
pub struct VersionSuffix {
|
||||
kind: VersionSuffixKind,
|
||||
number: Option<VersionNumber>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Get)]
|
||||
#[allow(clippy::derived_hash_with_manual_eq)]
|
||||
#[derive(Debug, Clone, Hash, Get)]
|
||||
pub struct VersionSuffixes(#[get(method = "get", kind = "deref")] Vec<VersionSuffix>);
|
||||
|
||||
#[derive(Debug, Clone, Get, PartialEq, Eq)]
|
||||
#[derive(Debug, Clone, Get, PartialEq, Eq, Hash)]
|
||||
pub struct BuildId(#[get(method = "get", kind = "deref")] String);
|
||||
|
||||
#[derive(Clone, Debug, Get)]
|
||||
#[allow(clippy::derived_hash_with_manual_eq)]
|
||||
#[derive(Clone, Debug, Hash, Get)]
|
||||
pub struct Version {
|
||||
numbers: VersionNumbers,
|
||||
letter: Option<char>,
|
||||
@@ -70,19 +74,19 @@ pub struct Version {
|
||||
build_id: Option<BuildId>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub struct Wildcard;
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum SlotOperator {
|
||||
Eq,
|
||||
Star,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Get)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Get)]
|
||||
pub struct SlotName(#[get(method = "name", kind = "deref")] String);
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum Slot {
|
||||
Wildcard,
|
||||
Equal,
|
||||
@@ -96,28 +100,28 @@ pub enum Slot {
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum UseDepNegate {
|
||||
Minus,
|
||||
Exclamation,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum UseDepSign {
|
||||
Enabled,
|
||||
Disabled,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
||||
pub enum UseDepCondition {
|
||||
Eq,
|
||||
Question,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
|
||||
pub struct Repo(String);
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Get)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Get)]
|
||||
pub struct UseDep {
|
||||
negate: Option<UseDepNegate>,
|
||||
flag: UseFlag,
|
||||
@@ -125,13 +129,13 @@ pub struct UseDep {
|
||||
condition: Option<UseDepCondition>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Get)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Get)]
|
||||
pub struct Cp {
|
||||
category: Category,
|
||||
name: Name,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Get)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Get)]
|
||||
pub struct Cpv {
|
||||
category: Category,
|
||||
name: Name,
|
||||
@@ -139,7 +143,7 @@ pub struct Cpv {
|
||||
slot: Option<Slot>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Get, PartialEq, Eq)]
|
||||
#[derive(Clone, Debug, Get, PartialEq, Eq, Hash)]
|
||||
pub struct Atom {
|
||||
blocker: Option<Blocker>,
|
||||
category: Category,
|
||||
|
||||
Reference in New Issue
Block a user