about summary refs log tree commit diff
path: root/tvix/nix-compat/src/store_path/mod.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-12-09T10·48+0200
committerclbot <clbot@tvl.fyi>2023-12-09T12·58+0000
commit0907420600ba0f9270065dd83e81fb8f56dfda71 (patch)
tree4bacffb7e7b9b1352f9def180f4a990f395610ac /tvix/nix-compat/src/store_path/mod.rs
parent5855959d879a6f57ff683f752fdc4d0c47427382 (diff)
refactor(nix-compat/store_path): from_absolute_path to StorePathRef r/7132
The only non-test usage was only checking for the error case, and we can
still convert this to an owned StorePath by calling to_owned() on
StorePathRef.

Change-Id: I9f67a759e580c9c429c96896bcdd295392aa5a2a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10225
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/nix-compat/src/store_path/mod.rs')
-rw-r--r--tvix/nix-compat/src/store_path/mod.rs29
1 files changed, 15 insertions, 14 deletions
diff --git a/tvix/nix-compat/src/store_path/mod.rs b/tvix/nix-compat/src/store_path/mod.rs
index 350e65d83f..9dfbb01630 100644
--- a/tvix/nix-compat/src/store_path/mod.rs
+++ b/tvix/nix-compat/src/store_path/mod.rs
@@ -97,16 +97,6 @@ impl StorePath {
         Ok(StorePathRef::from_bytes(s)?.to_owned())
     }
 
-    /// Construct a [StorePath] from an absolute store path string.
-    /// This is equivalent to calling [StorePath::from_bytes], but stripping the
-    /// [STORE_DIR_WITH_SLASH] prefix before.
-    pub fn from_absolute_path(s: &[u8]) -> Result<StorePath, Error> {
-        match s.strip_prefix(STORE_DIR_WITH_SLASH.as_bytes()) {
-            Some(s_stripped) => Self::from_bytes(s_stripped),
-            None => Err(Error::MissingStoreDir),
-        }
-    }
-
     /// Decompose a string into a [StorePath] and a [PathBuf] containing the
     /// rest of the path, or an error.
     #[cfg(target_family = "unix")]
@@ -187,6 +177,16 @@ impl<'a> StorePathRef<'a> {
         })
     }
 
+    /// Construct a [StorePathRef] from an absolute store path string.
+    /// This is equivalent to calling [StorePathRef::from_bytes], but stripping
+    /// the [STORE_DIR_WITH_SLASH] prefix before.
+    pub fn from_absolute_path(s: &'a [u8]) -> Result<Self, Error> {
+        match s.strip_prefix(STORE_DIR_WITH_SLASH.as_bytes()) {
+            Some(s_stripped) => Self::from_bytes(s_stripped),
+            None => Err(Error::MissingStoreDir),
+        }
+    }
+
     /// Construct a [StorePathRef] by passing the `$digest-$name` string
     /// that comes after [STORE_DIR_WITH_SLASH].
     pub fn from_bytes(s: &'a [u8]) -> Result<Self, Error> {
@@ -284,7 +284,7 @@ impl fmt::Display for StorePathRef<'_> {
 mod tests {
     use std::path::PathBuf;
 
-    use crate::store_path::DIGEST_SIZE;
+    use crate::store_path::{StorePathRef, DIGEST_SIZE};
     use hex_literal::hex;
     use test_case::test_case;
 
@@ -360,10 +360,11 @@ mod tests {
         let nixpath_expected =
             StorePath::from_bytes(example_nix_path_str.as_bytes()).expect("must parse");
 
-        let nixpath_actual = StorePath::from_absolute_path(
+        let nixpath_actual = StorePathRef::from_absolute_path(
             "/nix/store/00bgd045z0d4icpbc2yyz4gx48ak44la-net-tools-1.60_p20170221182432".as_bytes(),
         )
-        .expect("must parse");
+        .expect("must parse")
+        .to_owned();
 
         assert_eq!(nixpath_expected, nixpath_actual);
 
@@ -377,7 +378,7 @@ mod tests {
     fn absolute_path_missing_prefix() {
         assert_eq!(
             Error::MissingStoreDir,
-            StorePath::from_absolute_path(b"foobar-123").expect_err("must fail")
+            StorePathRef::from_absolute_path(b"foobar-123").expect_err("must fail")
         );
     }