oid: `const ZERO_SHA1` instead of `fn sha1_zero`
`fn sha1_zero` can be `const fn`, and since it does not take arguments, it can just be a `const`. There is no good reason to not have a constant. Justification for changing the order to first specify "zero" and then "SHA1": In the future we will support multiple object formats. A function that produces a zero OID would be parameterized by the object format then. Imagine `fn zero(format: ObjectFormat)` which would be called as `Oid::zero(ObjectForma::Sha1)`. In anticipation, we change the ordering to match.
This commit is contained in:
parent
aa177b0400
commit
f65175397f
|
|
@ -336,7 +336,7 @@ impl Encode for FileHeader {
|
||||||
w.meta(format!("new file mode {:o}", u32::from(new.mode.clone())))?;
|
w.meta(format!("new file mode {:o}", u32::from(new.mode.clone())))?;
|
||||||
w.meta(format!(
|
w.meta(format!(
|
||||||
"index {}..{}",
|
"index {}..{}",
|
||||||
term::format::oid(git::Oid::sha1_zero()),
|
term::format::oid(git::Oid::ZERO_SHA1),
|
||||||
term::format::oid(*new.oid),
|
term::format::oid(*new.oid),
|
||||||
))?;
|
))?;
|
||||||
|
|
||||||
|
|
@ -358,7 +358,7 @@ impl Encode for FileHeader {
|
||||||
w.meta(format!(
|
w.meta(format!(
|
||||||
"index {}..{}",
|
"index {}..{}",
|
||||||
term::format::oid(*old.oid),
|
term::format::oid(*old.oid),
|
||||||
term::format::oid(git::Oid::sha1_zero())
|
term::format::oid(git::Oid::ZERO_SHA1)
|
||||||
))?;
|
))?;
|
||||||
|
|
||||||
w.meta(format!("--- a/{}", path.display()))?;
|
w.meta(format!("--- a/{}", path.display()))?;
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ impl radicle::node::Handle for Handle {
|
||||||
|
|
||||||
Ok(RefsAt {
|
Ok(RefsAt {
|
||||||
remote: self.nid()?,
|
remote: self.nid()?,
|
||||||
at: Oid::sha1_zero(),
|
at: Oid::ZERO_SHA1,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,8 @@ pub enum Oid {
|
||||||
// for forwards compatibility: What if another hash with digests of the same
|
// for forwards compatibility: What if another hash with digests of the same
|
||||||
// length becomes popular?
|
// length becomes popular?
|
||||||
impl Oid {
|
impl Oid {
|
||||||
|
pub const ZERO_SHA1: Self = Self::Sha1([0u8; SHA1_DIGEST_LEN]);
|
||||||
|
|
||||||
pub fn from_sha1(digest: [u8; SHA1_DIGEST_LEN]) -> Self {
|
pub fn from_sha1(digest: [u8; SHA1_DIGEST_LEN]) -> Self {
|
||||||
Self::Sha1(digest)
|
Self::Sha1(digest)
|
||||||
}
|
}
|
||||||
|
|
@ -96,10 +98,6 @@ impl Oid {
|
||||||
Oid::Sha1(digest) => Some(*digest),
|
Oid::Sha1(digest) => Some(*digest),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn sha1_zero() -> Self {
|
|
||||||
Self::Sha1([0u8; SHA1_DIGEST_LEN])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Interaction with zero.
|
/// Interaction with zero.
|
||||||
|
|
@ -230,7 +228,7 @@ pub mod str {
|
||||||
"0000000000000000000000000000000000000000"
|
"0000000000000000000000000000000000000000"
|
||||||
.parse::<Oid>()
|
.parse::<Oid>()
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
Oid::sha1_zero()
|
Oid::ZERO_SHA1
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -319,7 +317,7 @@ mod fmt {
|
||||||
#[test]
|
#[test]
|
||||||
fn zero() {
|
fn zero() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Oid::sha1_zero().to_string(),
|
Oid::ZERO_SHA1.to_string(),
|
||||||
"0000000000000000000000000000000000000000"
|
"0000000000000000000000000000000000000000"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -404,7 +402,7 @@ mod gix {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn zero() {
|
fn zero() {
|
||||||
assert!(Oid::sha1_zero() == Other::null(Kind::Sha1));
|
assert!(Oid::ZERO_SHA1 == Other::null(Kind::Sha1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -451,7 +449,7 @@ mod git2 {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn zero() {
|
fn zero() {
|
||||||
assert!(Oid::sha1_zero() == Other::zero());
|
assert!(Oid::ZERO_SHA1 == Other::zero());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ impl Refs {
|
||||||
let mut buf = String::new();
|
let mut buf = String::new();
|
||||||
|
|
||||||
for (name, oid) in self.0.iter() {
|
for (name, oid) in self.0.iter() {
|
||||||
debug_assert_ne!(oid, &Oid::sha1_zero());
|
debug_assert_ne!(oid, &Oid::ZERO_SHA1);
|
||||||
debug_assert_ne!(name, &SIGREFS_BRANCH.to_ref_string());
|
debug_assert_ne!(name, &SIGREFS_BRANCH.to_ref_string());
|
||||||
|
|
||||||
buf.push_str(&oid.to_string());
|
buf.push_str(&oid.to_string());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue