about summary refs log tree commit diff
diff options
context:
space:
mode:
authoredef <edef@edef.eu>2023-10-27T12·07+0000
committeredef <edef@edef.eu>2023-10-27T13·56+0000
commitc19c6c23cb2a36279ee147d335ffbe506b0f485b (patch)
treeaa527028dd580a10bea86efc14014138845f7804
parentb994f692d3c02a858eacfece9e6a7d6990f46539 (diff)
feat(nix-compat/store_path): validate_name takes AsRef<[u8]> r/6891
Change-Id: I8819e2a7b63008a68f4f82035a08b960ac480dc3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9858
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
-rw-r--r--tvix/nix-compat/src/store_path/mod.rs4
-rw-r--r--tvix/nix-compat/src/store_path/utils.rs3
2 files changed, 4 insertions, 3 deletions
diff --git a/tvix/nix-compat/src/store_path/mod.rs b/tvix/nix-compat/src/store_path/mod.rs
index 56bf639f21..8c5f6fd5c2 100644
--- a/tvix/nix-compat/src/store_path/mod.rs
+++ b/tvix/nix-compat/src/store_path/mod.rs
@@ -177,7 +177,9 @@ impl StorePath {
 
 /// Checks a given &[u8] to match the restrictions for [StorePath::name], and
 /// returns the name as string if successful.
-pub(crate) fn validate_name(s: &[u8]) -> Result<&str, Error> {
+pub(crate) fn validate_name(s: &(impl AsRef<[u8]> + ?Sized)) -> Result<&str, Error> {
+    let s = s.as_ref();
+
     // Empty or excessively long names are not allowed.
     if s.is_empty() || s.len() > 211 {
         return Err(Error::InvalidLength());
diff --git a/tvix/nix-compat/src/store_path/utils.rs b/tvix/nix-compat/src/store_path/utils.rs
index 94e9f106d9..44e4e4a59e 100644
--- a/tvix/nix-compat/src/store_path/utils.rs
+++ b/tvix/nix-compat/src/store_path/utils.rs
@@ -166,8 +166,7 @@ fn build_store_path_from_fingerprint_parts<B: AsRef<[u8]>>(
     hash: &NixHash,
     name: B,
 ) -> Result<StorePath, Error> {
-    let name = name.as_ref();
-    let name = super::validate_name(name.as_ref())?.to_owned();
+    let name = super::validate_name(&name)?.to_owned();
 
     let digest = compress_hash(&{
         let mut h = Sha256::new();