diff options
Diffstat (limited to 'tvix/nix-compat/src/store_path')
-rw-r--r-- | tvix/nix-compat/src/store_path/mod.rs | 29 |
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 350e65d83fb0..9dfbb01630d7 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") ); } |