Struct rustdoc::html::render::search_index::SerializedSearchIndex
source · pub(crate) struct SerializedSearchIndex {
pub(crate) index: String,
pub(crate) desc: Vec<(usize, String)>,
}
Expand description
The serialized search description sharded version
The index
is a JSON-encoded list of names and other information.
The desc has newlined descriptions, split up by size into 128KiB shards.
For example, (4, "foo\nbar\nbaz\nquux")
.
There is no single, optimal size for these shards, because it depends on configuration values that we can’t predict or control, such as the version of HTTP used (HTTP/1.1 would work better with larger files, while HTTP/2 and 3 are more agnostic), transport compression (gzip, zstd, etc), whether the search query is going to produce a large number of results or a small number, the bandwidth delay product of the network…
Gzipping some standard library descriptions to guess what transport compression will do, the compressed file sizes can be as small as 4.9KiB or as large as 18KiB (ignoring the final 1.9KiB shard of leftovers). A “reasonable” range for files is for them to be bigger than 1KiB, since that’s about the amount of data that can be transferred in a single TCP packet, and 64KiB, the maximum amount of data that TCP can transfer in a single round trip without extensions.
Fields§
§index: String
§desc: Vec<(usize, String)>
Auto Trait Implementations§
impl DynSend for SerializedSearchIndex
impl DynSync for SerializedSearchIndex
impl Freeze for SerializedSearchIndex
impl RefUnwindSafe for SerializedSearchIndex
impl Send for SerializedSearchIndex
impl Sync for SerializedSearchIndex
impl Unpin for SerializedSearchIndex
impl UnwindSafe for SerializedSearchIndex
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, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<T> Filterable for T
impl<T> Filterable for T
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> 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<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed ) -> T
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeSendSync for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 48 bytes