summaryrefslogtreecommitdiff
path: root/src/atom/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/atom/mod.rs')
-rw-r--r--src/atom/mod.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/atom/mod.rs b/src/atom/mod.rs
index 8da7468..3be42bb 100644
--- a/src/atom/mod.rs
+++ b/src/atom/mod.rs
@@ -67,6 +67,9 @@ pub struct Version {
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+pub struct Wildcard;
+
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SlotOperator {
Eq,
Star,
@@ -127,7 +130,7 @@ pub struct Atom {
blocker: Option<Blocker>,
category: Category,
name: Name,
- version: Option<(VersionOperator, Version)>,
+ version: Option<(VersionOperator, Version, Option<Wildcard>)>,
slot: Option<Slot>,
#[get(kind = "deref")]
usedeps: Vec<UseDep>,
@@ -146,7 +149,7 @@ impl Cpv {
impl Atom {
#[must_use]
pub fn version_operator(&self) -> Option<VersionOperator> {
- self.version.clone().map(|(oper, _)| oper)
+ self.version.clone().map(|(oper, _, _)| oper)
}
#[must_use]
@@ -160,7 +163,7 @@ impl Atom {
#[must_use]
pub fn into_cpv(self) -> Option<Cpv> {
match self.version {
- Some((_, version)) => Some(Cpv {
+ Some((_, version, _)) => Some(Cpv {
category: self.category,
name: self.name,
version,
@@ -639,8 +642,10 @@ impl fmt::Display for Atom {
write!(f, "/")?;
write!(f, "{}", self.name)?;
- if let Some((_, version)) = self.version.as_ref() {
+ if let Some((_, version, None)) = self.version() {
write!(f, "-{version}")?;
+ } else if let Some((_, version, Some(_))) = self.version() {
+ write!(f, "-{version}*")?;
}
if let Some(slot) = self.slot.as_ref() {