1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! Git-Internal: a high-performance Rust library for Git objects and pack files—encode/decode, delta (ref/offset/zstd),
//! caching, streaming, and sync/async pipelines.
//!
//! Goals
//! - Provide high-performance parsing and generation of Git pack format and Git objects.
//! - Support both file-based and streaming inputs of Git Pack.
//! - Offer synchronous and asynchronous APIs for multi-threaded and Tokio runtimes.
//!
//! Core Capabilities
//! - Decoding: base objects and delta objects (Ref-Delta, Offset-Delta, ZstdDelta).
//! - Encoding: serial and parallel pipelines; offset deltas and Zstd-based deltas.
//! - Streaming: `decode_stream` for `Stream<Bytes>`; `decode_async` decodes in a new thread and sends entries.
//! - Caching & memory: LRU-based cache; `MemSizeRecorder` tracks heap usage; optional `mem_limit` to bound memory.
//! - Utilities: Hash-stream helpers, zlib, delta, zstdelta toolkits.
//!
//! Modules
//! - `internal::pack`: decode/encode, caches, waitlists, parallel pipelines, helpers.
//! - `internal::object`: Blob/Tree/Commit/Tag/Note objects, type enum, object trait.
//! - `internal::zlib`: compression/decompression stream utilities.
//! - `delta` and `zstdelta`: delta algorithms and rebuild helpers.
//! - `errors`: unified error types.
//! - `hash`: Hash helpers.
//! - `utils`: common utilities (e.g., `CountingReader`).
//!
//! Typical Usage
//! - Offline large-file decode: `Pack::decode_async(reader, sender)` decodes in a thread and sends `Entry`s.
//! - Stream decode: `Pack::decode_stream(stream, sender)` consumes `ReaderStream` under Tokio.
//! - Parallel encode: `encode_async` / `parallel_encode` build packs from many objects.
//!
//! Test Data
//! - Located under `tests/data/`, includes real pack files and object sets.
// Core traits and types that external users need to implement/use
pub use ;
pub use ;