with_precise as a helper

This commit is contained in:
Jacob Finkelman 2024-07-29 19:33:21 +00:00
parent d2d210257f
commit 22f4352c29

View File

@ -468,48 +468,30 @@ impl SourceId {
/// Creates a new `SourceId` from this source with the given `precise`.
pub fn with_git_precise(self, fragment: Option<String>) -> SourceId {
let precise = fragment.map(|f| Precise::GitUrlFragment(f));
if self.inner.precise == precise {
self
} else {
SourceId::wrap(SourceIdInner {
precise,
..(*self.inner).clone()
})
}
self.with_precise(&fragment.map(|f| Precise::GitUrlFragment(f)))
}
/// Creates a new `SourceId` from this source without a `precise`.
pub fn without_precise(self) -> SourceId {
if self.inner.precise.is_none() {
self
} else {
SourceId::wrap(SourceIdInner {
precise: None,
..(*self.inner).clone()
})
}
self.with_precise(&None)
}
/// Creates a new `SourceId` from this source without a `precise`.
pub fn with_locked_precise(self) -> SourceId {
if self.inner.precise == Some(Precise::Locked) {
self
} else {
SourceId::wrap(SourceIdInner {
precise: Some(Precise::Locked),
..(*self.inner).clone()
})
}
self.with_precise(&Some(Precise::Locked))
}
/// Creates a new `SourceId` from this source with the `precise` from some other `SourceId`.
pub fn with_precise_from(self, v: Self) -> SourceId {
if self.inner.precise == v.inner.precise {
self.with_precise(&v.inner.precise)
}
fn with_precise(self, precise: &Option<Precise>) -> SourceId {
if &self.inner.precise == precise {
self
} else {
SourceId::wrap(SourceIdInner {
precise: v.inner.precise.clone(),
precise: precise.clone(),
..(*self.inner).clone()
})
}