pub struct ReachSet {
pub objects: Vec<Vec<u8>>,
pub commits: Vec<Vec<u8>>,
pub client_has: OidList,
}Expand description
One GitServe::select answer.
Fields§
§objects: Vec<Vec<u8>>Every object to send, as raw oids.
Order is not part of the contract. Measured 2026-08-08 on a
154-object fixture: sorted, unsorted and deliberately reversed all
produce copied=154 recompressed=0 and the identical object graph,
because the emitter orders its own output.
commits: Vec<Vec<u8>>Which of objects are commits. Not derivable by the caller without a
header read per object; the store knows it for free.
client_has: OidListThe closure of have: what the receiver held before this transfer,
never an object this transfer carries. The voucher a thin delta may name
a base from. Empty for a clone.
An OidList and not a Vec<Vec<u8>>, because this one is
repository-sized. objects is what the transfer carries — small for a
fetch — but the voucher is the closure of what the client already had,
which on an incremental fetch is very nearly the whole repository: 12 112
oids to answer a 69-object request, measured on oden 2026-08-15. One
allocation per oid of that is a per-request cost that buys nothing, in
both engines. See OidList.
Trait Implementations§
impl Eq for ReachSet
impl StructuralPartialEq for ReachSet
Auto Trait Implementations§
impl Freeze for ReachSet
impl RefUnwindSafe for ReachSet
impl Send for ReachSet
impl Sync for ReachSet
impl Unpin for ReachSet
impl UnsafeUnpin for ReachSet
impl UnwindSafe for ReachSet
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.