mirror of
https://github.com/martinvonz/jj.git
synced 2025-01-27 06:23:18 +00:00
view: add absent RemoteRef constructors, proxy methods, and conversion impls
Copied from RefTarget.
This commit is contained in:
parent
ab1a6e2f71
commit
d730b250a0
1 changed files with 43 additions and 0 deletions
|
@ -143,6 +143,33 @@ content_hash! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl RemoteRef {
|
||||||
|
/// Creates remote ref pointing to no commit.
|
||||||
|
pub fn absent() -> Self {
|
||||||
|
RemoteRef {
|
||||||
|
target: RefTarget::absent(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns remote ref pointing to no commit.
|
||||||
|
///
|
||||||
|
/// This will typically be used in place of `None` returned by map lookup.
|
||||||
|
pub fn absent_ref() -> &'static Self {
|
||||||
|
static TARGET: Lazy<RemoteRef> = Lazy::new(RemoteRef::absent);
|
||||||
|
&TARGET
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns true if the target points to no commit.
|
||||||
|
pub fn is_absent(&self) -> bool {
|
||||||
|
self.target.is_absent()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns true if the target points to any commit.
|
||||||
|
pub fn is_present(&self) -> bool {
|
||||||
|
self.target.is_present()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Helper to strip redundant `Option<T>` from `RefTarget` lookup result.
|
/// Helper to strip redundant `Option<T>` from `RefTarget` lookup result.
|
||||||
pub trait RefTargetOptionExt {
|
pub trait RefTargetOptionExt {
|
||||||
type Value;
|
type Value;
|
||||||
|
@ -166,6 +193,22 @@ impl<'a> RefTargetOptionExt for Option<&'a RefTarget> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl RefTargetOptionExt for Option<RemoteRef> {
|
||||||
|
type Value = RemoteRef;
|
||||||
|
|
||||||
|
fn flatten(self) -> Self::Value {
|
||||||
|
self.unwrap_or_else(RemoteRef::absent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> RefTargetOptionExt for Option<&'a RemoteRef> {
|
||||||
|
type Value = &'a RemoteRef;
|
||||||
|
|
||||||
|
fn flatten(self) -> Self::Value {
|
||||||
|
self.unwrap_or_else(|| RemoteRef::absent_ref())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Local and remote branches of the same branch name.
|
/// Local and remote branches of the same branch name.
|
||||||
#[derive(PartialEq, Eq, Clone, Debug)]
|
#[derive(PartialEq, Eq, Clone, Debug)]
|
||||||
pub struct BranchTarget<'a> {
|
pub struct BranchTarget<'a> {
|
||||||
|
|
Loading…
Reference in a new issue