docs(tvix/nix-compat): rename as_narinfo() to to_narinfo()
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
This commit is contained in:
parent
3d7f80c0e3
commit
329c4a1ace
2 changed files with 13 additions and 5 deletions
|
@ -173,12 +173,16 @@ impl PathInfo {
|
||||||
Ok(root_nix_path)
|
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<'_>].
|
/// [nix_compat::narinfo::NarInfo<'_>].
|
||||||
/// It can be used to validate Signatures, or get back a (sparse) NarInfo
|
/// It can be used to validate Signatures, or get back a (sparse) NarInfo
|
||||||
/// struct to prepare writing it out.
|
/// 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
|
/// Keep in mind this is not able to reconstruct all data present in the
|
||||||
/// NarInfo<'_>, as some of it is not stored at all:
|
/// 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
|
/// 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.
|
/// in, at least URL *must* be set again.
|
||||||
pub fn as_narinfo<'a>(
|
pub fn to_narinfo<'a>(
|
||||||
&'a self,
|
&'a self,
|
||||||
store_path: store_path::StorePathRef<'a>,
|
store_path: store_path::StorePathRef<'a>,
|
||||||
) -> Option<nix_compat::narinfo::NarInfo<'_>> {
|
) -> Option<nix_compat::narinfo::NarInfo<'_>> {
|
||||||
|
@ -197,7 +201,11 @@ impl PathInfo {
|
||||||
Some(nix_compat::narinfo::NarInfo {
|
Some(nix_compat::narinfo::NarInfo {
|
||||||
flags: Flags::empty(),
|
flags: Flags::empty(),
|
||||||
store_path,
|
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,
|
nar_size: narinfo.nar_size,
|
||||||
references: narinfo
|
references: narinfo
|
||||||
.reference_names
|
.reference_names
|
||||||
|
|
|
@ -424,7 +424,7 @@ CA: fixed:sha256:086vqwk2wl8zfs47sq2xpjc9k066ilmb8z6dn0q6ymwjzlm196cd"#
|
||||||
let path_info: PathInfo = (&narinfo_parsed).into();
|
let path_info: PathInfo = (&narinfo_parsed).into();
|
||||||
|
|
||||||
let mut narinfo_returned = path_info
|
let mut narinfo_returned = path_info
|
||||||
.as_narinfo(
|
.to_narinfo(
|
||||||
StorePathRef::from_bytes(b"pa10z4ngm0g83kx9mssrqzz30s84vq7k-hello-2.12.1.tar.gz")
|
StorePathRef::from_bytes(b"pa10z4ngm0g83kx9mssrqzz30s84vq7k-hello-2.12.1.tar.gz")
|
||||||
.expect("invalid storepath"),
|
.expect("invalid storepath"),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue