diff options
author | Florian Klink <flokli@flokli.de> | 2024-04-12T10·25+0300 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2024-04-13T10·03+0000 |
commit | 329c4a1acedc589f2cd1289964e69ff7daad177d (patch) | |
tree | 856305577e88b1456315d237954d2968624d4108 /tvix/store/src/proto | |
parent | 3d7f80c0e3c772e7814ace579bddd2e9667033c7 (diff) |
docs(tvix/nix-compat): rename as_narinfo() to to_narinfo() r/7892
This actually does a bit of allocation. There's two Vecs, one for references and one for signatures. We can get rid of the Vec at nar_hash. Change-Id: Ie025309b6678f83f5b961d49ff75dcfc7da145a1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11395 Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/store/src/proto')
-rw-r--r-- | tvix/store/src/proto/mod.rs | 16 | ||||
-rw-r--r-- | tvix/store/src/proto/tests/pathinfo.rs | 2 |
2 files changed, 13 insertions, 5 deletions
diff --git a/tvix/store/src/proto/mod.rs b/tvix/store/src/proto/mod.rs index dd3c18d77107..a09839c8bdf9 100644 --- a/tvix/store/src/proto/mod.rs +++ b/tvix/store/src/proto/mod.rs @@ -173,12 +173,16 @@ impl PathInfo { Ok(root_nix_path) } - /// With self and a given StorePathRef, this reconstructs a + /// With self and its store path name, this reconstructs a /// [nix_compat::narinfo::NarInfo<'_>]. /// It can be used to validate Signatures, or get back a (sparse) NarInfo /// struct to prepare writing it out. /// - /// This doesn't allocate any new data. + /// It assumes self to be validated first, and will only return None if the + /// `narinfo` field is unpopulated. + /// + /// It does very little allocation (a Vec each for `signatures` and + /// `references`), the rest points to data owned elsewhere. /// /// Keep in mind this is not able to reconstruct all data present in the /// NarInfo<'_>, as some of it is not stored at all: @@ -188,7 +192,7 @@ impl PathInfo { /// /// If you want to render it out to a string and be able to parse it back /// in, at least URL *must* be set again. - pub fn as_narinfo<'a>( + pub fn to_narinfo<'a>( &'a self, store_path: store_path::StorePathRef<'a>, ) -> Option<nix_compat::narinfo::NarInfo<'_>> { @@ -197,7 +201,11 @@ impl PathInfo { Some(nix_compat::narinfo::NarInfo { flags: Flags::empty(), store_path, - nar_hash: narinfo.nar_sha256.to_vec().try_into().unwrap(), + nar_hash: narinfo + .nar_sha256 + .as_ref() + .try_into() + .expect("invalid narhash"), nar_size: narinfo.nar_size, references: narinfo .reference_names diff --git a/tvix/store/src/proto/tests/pathinfo.rs b/tvix/store/src/proto/tests/pathinfo.rs index 2806a8ee1d9e..36c4f33933fb 100644 --- a/tvix/store/src/proto/tests/pathinfo.rs +++ b/tvix/store/src/proto/tests/pathinfo.rs @@ -424,7 +424,7 @@ CA: fixed:sha256:086vqwk2wl8zfs47sq2xpjc9k066ilmb8z6dn0q6ymwjzlm196cd"# let path_info: PathInfo = (&narinfo_parsed).into(); let mut narinfo_returned = path_info - .as_narinfo( + .to_narinfo( StorePathRef::from_bytes(b"pa10z4ngm0g83kx9mssrqzz30s84vq7k-hello-2.12.1.tar.gz") .expect("invalid storepath"), ) |