diff options
author | edef <edef@edef.eu> | 2024-04-30T08·52+0000 |
---|---|---|
committer | edef <edef@edef.eu> | 2024-05-04T21·45+0000 |
commit | 343e176bec6251b53006331e752c285d50c7167f (patch) | |
tree | 26de48ac23a364be47bc236f8942875f9ddaa31a /tvix/nix-compat/src/wire/bytes/reader/trailer.rs | |
parent | ba00f0c6955fcd505cfa7ef06dc35b53ac14868a (diff) |
feat(nix-compat/wire/bytes/reader): parametrise on trailer tag r/8074
This allows using BytesReader with a custom tag, eg the closing parens for the NAR reader. No public constructor is provided for custom-tagged readers, since this feature isn't public API. Change-Id: I82e73d064edc4b6783ead1d6fe46a5b35f45c844 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11543 Reviewed-by: Brian Olsen <me@griff.name> Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/nix-compat/src/wire/bytes/reader/trailer.rs')
-rw-r--r-- | tvix/nix-compat/src/wire/bytes/reader/trailer.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/tvix/nix-compat/src/wire/bytes/reader/trailer.rs b/tvix/nix-compat/src/wire/bytes/reader/trailer.rs index 858026bf7135..0b0c7b13554d 100644 --- a/tvix/nix-compat/src/wire/bytes/reader/trailer.rs +++ b/tvix/nix-compat/src/wire/bytes/reader/trailer.rs @@ -1,4 +1,5 @@ use std::{ + fmt::Debug, future::Future, marker::PhantomData, ops::Deref, @@ -33,14 +34,14 @@ pub(crate) trait Tag { /// Suitably sized buffer for reading [Self::PATTERN] /// /// HACK: This is a workaround for const generics limitations. - type Buf: AsRef<[u8]> + AsMut<[u8]> + Unpin; + type Buf: AsRef<[u8]> + AsMut<[u8]> + Debug + Unpin; /// Make an instance of [Self::Buf] fn make_buf() -> Self::Buf; } #[derive(Debug)] -pub(crate) enum Pad {} +pub enum Pad {} impl Tag for Pad { const PATTERN: &'static [u8] = &[0; 8]; @@ -53,7 +54,7 @@ impl Tag for Pad { } #[derive(Debug)] -pub(crate) struct ReadTrailer<R, T: Tag = Pad> { +pub(crate) struct ReadTrailer<R, T: Tag> { reader: R, data_len: u8, filled: u8, |