feat(nix-compat): Add NixDeserialize and NixRead traits

Add a trait for deserializing a type from a daemon worker connection.
This adds the NixDeserialize trait which is kind of like the serde
Deserialize trait in that individual types are meant to implement it
and it can potentially be derived in the future.

The NixDeserialize trait takes something that implements NixRead as
input so that you can among other things mock the reader.

Change-Id: Ibb59e3562dfc822652f7d18039f00a1c0d422997
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11990
Autosubmit: Brian Olsen <me@griff.name>
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
Brian Olsen 2024-07-20 11:25:04 +02:00 committed by clbot
parent a774cb8c10
commit 9af6920478
22 changed files with 1499 additions and 166 deletions

View file

@ -214,9 +214,9 @@ dependencies = [
[[package]]
name = "bytes"
version = "1.5.0"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
[[package]]
name = "cc"
@ -760,6 +760,7 @@ version = "0.1.0"
dependencies = [
"bitflags 2.4.2",
"bstr",
"bytes",
"data-encoding",
"ed25519",
"ed25519-dalek",

View file

@ -742,9 +742,9 @@ rec {
};
"bytes" = rec {
crateName = "bytes";
version = "1.5.0";
version = "1.6.1";
edition = "2018";
sha256 = "08w2i8ac912l8vlvkv3q51cd4gr09pwlg3sjsjffcizlrb0i5gd2";
sha256 = "0lnryqfiymbq5mfflfmbsqvfnw80kkh36nk5kpiscgxb9ac1cad1";
authors = [
"Carl Lerche <me@carllerche.com>"
"Sean McArthur <sean@seanmonstar.com>"
@ -2384,6 +2384,11 @@ rec {
packageId = "bstr";
features = [ "alloc" "unicode" "serde" ];
}
{
name = "bytes";
packageId = "bytes";
optional = true;
}
{
name = "data-encoding";
packageId = "data-encoding";
@ -2461,12 +2466,13 @@ rec {
];
features = {
"async" = [ "tokio" ];
"bytes" = [ "dep:bytes" ];
"default" = [ "async" "wire" ];
"pin-project-lite" = [ "dep:pin-project-lite" ];
"tokio" = [ "dep:tokio" ];
"wire" = [ "tokio" "pin-project-lite" ];
"wire" = [ "tokio" "pin-project-lite" "bytes" ];
};
resolvedDefaultFeatures = [ "async" "default" "pin-project-lite" "tokio" "wire" ];
resolvedDefaultFeatures = [ "async" "bytes" "default" "pin-project-lite" "tokio" "wire" ];
};
"nom" = rec {
crateName = "nom";