pub struct DisplaySource<'a, S: ObjectSource + ?Sized> { /* private fields */ }Expand description
Adapter that makes any ObjectSource read without BLAKE3
verification, for display-only rendering (diff, show, and the
commit/merge/pull post-op summaries). Wrap the source once at the
render call site — DisplaySource::new(&store) — and pass the
wrapper wherever a generic S: ObjectSource render function expects
its source. Every existing render function (render_stat,
emit_entry_patch, LoadedBlob::load/prefix/into_content) works
unchanged: the verify/no-verify policy lives entirely in which source
gets passed in, never in a flag threaded through render code.
§When to use
mkit never feeds unverified bytes into state that mkit itself writes,
or into output that mkit’s own tooling round-trips (format-patch →
git am) — a diffstat or patch preview that only a human reads and
discards is neither, so it’s fair game. NEVER wrap a source feeding
publication (commit/merge/rebase tree writes), dedup, fetch/apply, or
any path whose output becomes durable state or gets applied elsewhere
(e.g. the format-patch body in git_tools.rs, which is deliberately
NOT wrapped because git am applies it into new commits). See
ObjectStore::read_unverified for the full policy this wrapper
exists to apply consistently (#625).
Implementations§
Source§impl<'a, S: ObjectSource + ?Sized> DisplaySource<'a, S>
impl<'a, S: ObjectSource + ?Sized> DisplaySource<'a, S>
Trait Implementations§
Source§impl<S: ObjectSource + ?Sized> Debug for DisplaySource<'_, S>
impl<S: ObjectSource + ?Sized> Debug for DisplaySource<'_, S>
Source§impl<S: ObjectSource + ?Sized> ObjectSource for DisplaySource<'_, S>
impl<S: ObjectSource + ?Sized> ObjectSource for DisplaySource<'_, S>
Source§fn read(&self, h: &Hash) -> StoreResult<Vec<u8>>
fn read(&self, h: &Hash) -> StoreResult<Vec<u8>>
h. Read moreSource§fn read_object(&self, h: &Hash) -> StoreResult<Object>
fn read_object(&self, h: &Hash) -> StoreResult<Object>
Source§fn read_unverified(&self, h: &Hash) -> StoreResult<Vec<u8>>
fn read_unverified(&self, h: &Hash) -> StoreResult<Vec<u8>>
h without integrity verification, for display-only
rendering — see ObjectStore::read_unverified for the full
policy (#625). Defaults to the fully-verifying Self::read, so
every existing and third-party ObjectSource stays verifying
unless it explicitly opts in by overriding this method. Read moreAuto Trait Implementations§
impl<'a, S> Freeze for DisplaySource<'a, S>where
S: ?Sized,
impl<'a, S> RefUnwindSafe for DisplaySource<'a, S>where
S: RefUnwindSafe + ?Sized,
impl<'a, S> Send for DisplaySource<'a, S>
impl<'a, S> Sync for DisplaySource<'a, S>
impl<'a, S> Unpin for DisplaySource<'a, S>where
S: ?Sized,
impl<'a, S> UnsafeUnpin for DisplaySource<'a, S>where
S: ?Sized,
impl<'a, S> UnwindSafe for DisplaySource<'a, S>where
S: RefUnwindSafe + ?Sized,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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