snix/tvix/nix-compat
Florian Klink d00c75ea9c fix(nix-compat/store_path): fix Deserialize with borrow
We were wrongly using `'de` as a lifetime for both `Deserializer` and
`StorePathRef`.

This prevented Deserializing into a struct containing `StorePathRef`.

See https://serde.rs/lifetimes.html#the-deserializede-lifetime, the last
part of the paragraph:

The 'de lifetime should not appear in the type to which the Deserialize
impl applies.

- // Do not do this. Sooner or later you will be sad.
- impl<'de> Deserialize<'de> for Q<'de> {
+ // Do this instead.
+ impl<'de: 'a, 'a> Deserialize<'de> for Q<'a> {

This fixes it, and adds a test, deserializing into a `Container` struct.

It also fixes the existing test cases, deserialize_ref was actually
deserialize_owned, and deserialize_owned didn't exist yet - but they
alone are not enough to provoke the lifetime issues.

Change-Id: Iaed2832998cae5f192eafe7fd5243e82ff6e051e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11372
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: picnoir picnoir <picnoir@alternativebit.fr>
2024-04-07 21:21:09 +00:00
..
benches fix(nix-compat/narinfo): unwrap in the benchmark 2023-10-28 17:11:22 +00:00
src fix(nix-compat/store_path): fix Deserialize with borrow 2024-04-07 21:21:09 +00:00
testdata feat(tvix/nix-compat): add narinfo parsing and serialisation 2023-10-27 16:08:06 +00:00
Cargo.toml feat(tvix/nix-compat/wire): introduce BytesWriter 2024-04-06 14:12:05 +00:00
default.nix test(tvix/nix-compat/nar/writer/sync): add tests 2023-10-18 12:31:57 +00:00