diff options
author | edef <edef@edef.eu> | 2023-10-27T10·53+0000 |
---|---|---|
committer | edef <edef@edef.eu> | 2023-10-27T12·18+0000 |
commit | 99a61def17edbd77795efd2fda9e557b2cfef571 (patch) | |
tree | d8b5309b160213d5bf4991dfe7fdcf61952bddc0 /tvix/nix-compat | |
parent | fdc2e90ef2e64224f4f778f2a26bbfeb02afde2b (diff) |
fix(tvix/nix-compat): don't box CAHash::Text r/6886
Change-Id: I31df3909bc21c9038f9fb831879e60e541242819 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9853 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/nix-compat')
-rw-r--r-- | tvix/nix-compat/src/derivation/validate.rs | 2 | ||||
-rw-r--r-- | tvix/nix-compat/src/nixhash/ca_hash.rs | 12 | ||||
-rw-r--r-- | tvix/nix-compat/src/store_path/utils.rs | 9 |
3 files changed, 9 insertions, 14 deletions
diff --git a/tvix/nix-compat/src/derivation/validate.rs b/tvix/nix-compat/src/derivation/validate.rs index 3474dcb5dbbb..37ddf9017138 100644 --- a/tvix/nix-compat/src/derivation/validate.rs +++ b/tvix/nix-compat/src/derivation/validate.rs @@ -141,7 +141,7 @@ mod test { "out".to_string(), Output { path: "".to_string(), - ca_hash: Some(CAHash::Text(Box::new([0; 32]))), // This is disallowed + ca_hash: Some(CAHash::Text([0; 32])), // This is disallowed }, ); diff --git a/tvix/nix-compat/src/nixhash/ca_hash.rs b/tvix/nix-compat/src/nixhash/ca_hash.rs index 5d9ae3f3a861..93ef52cc63ab 100644 --- a/tvix/nix-compat/src/nixhash/ca_hash.rs +++ b/tvix/nix-compat/src/nixhash/ca_hash.rs @@ -19,17 +19,17 @@ use super::from_algo_and_digest; /// - "digest". The digest itself. #[derive(Clone, Debug, Eq, PartialEq)] pub enum CAHash { - Flat(NixHash), // "fixed flat" - Nar(NixHash), // "fixed recursive" - Text(Box<[u8; 32]>), // "text", only supports sha256 + Flat(NixHash), // "fixed flat" + Nar(NixHash), // "fixed recursive" + Text([u8; 32]), // "text", only supports sha256 } impl CAHash { pub fn digest(&self) -> Cow<NixHash> { - match self { - CAHash::Nar(ref digest) => Cow::Borrowed(digest), - CAHash::Text(ref digest) => Cow::Owned(NixHash::Sha256(*digest.clone())), + match *self { CAHash::Flat(ref digest) => Cow::Borrowed(digest), + CAHash::Nar(ref digest) => Cow::Borrowed(digest), + CAHash::Text(digest) => Cow::Owned(NixHash::Sha256(digest)), } } diff --git a/tvix/nix-compat/src/store_path/utils.rs b/tvix/nix-compat/src/store_path/utils.rs index b625abdfd0b9..375882795c31 100644 --- a/tvix/nix-compat/src/store_path/utils.rs +++ b/tvix/nix-compat/src/store_path/utils.rs @@ -50,12 +50,7 @@ pub fn build_text_path<S: AsRef<str>, I: IntoIterator<Item = S>, C: AsRef<[u8]>> // produce the sha256 digest of the contents let content_digest = Sha256::new_with_prefix(content).finalize().into(); - build_ca_path( - name, - &CAHash::Text(Box::new(content_digest)), - references, - false, - ) + build_ca_path(name, &CAHash::Text(content_digest), references, false) } /// This builds a store path from a [CAHash] and a list of references. @@ -72,7 +67,7 @@ pub fn build_ca_path<B: AsRef<[u8]>, S: AsRef<str>, I: IntoIterator<Item = S>>( } build_store_path_from_fingerprint_parts( &make_references_string("text", references, false), - &NixHash::Sha256(*digest.to_owned()), + &NixHash::Sha256(*digest), name, ) .map_err(BuildStorePathError::InvalidStorePath) |