pub struct PackWriter { /* private fields */ }Expand description
Builds a packfile in memory, enforcing entry/payload caps and
recording entries in insertion order. Call Self::finish to obtain
the final packfile bytes (header + entries + trailer).
Implementations§
Source§impl PackWriter
impl PackWriter
Sourcepub fn push_raw(
&mut self,
hash_of_bytes: Hash,
bytes: Vec<u8>,
) -> Result<Hash, PackError>
pub fn push_raw( &mut self, hash_of_bytes: Hash, bytes: Vec<u8>, ) -> Result<Hash, PackError>
Append a raw object entry. bytes is the fully serialised object
payload; hash_of_bytes is the BLAKE3 of those same bytes —
callers usually have it on hand from the object store, so we take
it explicitly to avoid an extra BLAKE3 pass over the same buffer.
Returns the same hash for chaining.
Sourcepub fn push_delta(
&mut self,
base_hash: &Hash,
delta_stream: &[u8],
) -> Result<(), PackError>
pub fn push_delta( &mut self, base_hash: &Hash, delta_stream: &[u8], ) -> Result<(), PackError>
Append a delta entry. base_hash MUST refer to an earlier raw
entry in this pack OR an object already in the destination store.
delta_stream MUST be a valid SPEC-DELTA stream — we don’t
re-validate here (the writer is trusted), but the reader will.
Sourcepub fn entry_count(&self) -> usize
pub fn entry_count(&self) -> usize
Number of entries pushed so far. Useful for sizing diagnostics.
Trait Implementations§
Source§impl Debug for PackWriter
impl Debug for PackWriter
Source§impl Default for PackWriter
impl Default for PackWriter
Source§fn default() -> PackWriter
fn default() -> PackWriter
Auto Trait Implementations§
impl Freeze for PackWriter
impl RefUnwindSafe for PackWriter
impl Send for PackWriter
impl Sync for PackWriter
impl Unpin for PackWriter
impl UnsafeUnpin for PackWriter
impl UnwindSafe for PackWriter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more