pub struct CacheEntry {
pub directives: Vec<Spanned<Directive>>,
pub options: CachedOptions,
pub plugins: Vec<CachedPlugin>,
pub files: Vec<String>,
}Expand description
Complete cache entry containing all data needed to restore a LoadResult.
Fields§
§directives: Vec<Spanned<Directive>>All parsed directives.
options: CachedOptionsParsed options.
plugins: Vec<CachedPlugin>Plugin declarations.
files: Vec<String>All files that were loaded (as strings, for serialization).
Implementations§
Source§impl CacheEntry
impl CacheEntry
Sourcepub fn file_paths(&self) -> Vec<PathBuf>
pub fn file_paths(&self) -> Vec<PathBuf>
Get files as PathBuf references.
Sourcepub fn into_load_result(self) -> LoadResult
pub fn into_load_result(self) -> LoadResult
Reconstruct a LoadResult equivalent to a
fresh parse of the cached source.
Re-reads each cached source file for the source map (so error
reporting still has text), converts the cached plugin
declarations back (their span / file_id are not meaningful
from cache), and — crucially — rebuilds the display context from
the cached directives + options via the same inference a fresh
load uses, so a cache-hit LoadResult formats numbers
identically to an uncached one. Reconstructing it as an empty
DisplayContext (as the per-command CLI code used to) would
silently change per-currency display precision for any consumer
that reads it.
errors is empty by construction: the cache is only written for
error-free, warning-free loads.
Strings are NOT re-interned here; a caller that wants the memory
dedup should call crate::reintern_directives on
self.directives first (it needs &mut).
Trait Implementations§
Source§impl Archive for CacheEntry
impl Archive for CacheEntry
Source§const COPY_OPTIMIZATION: CopyOptimization<Self>
const COPY_OPTIMIZATION: CopyOptimization<Self>
serialize. Read moreSource§type Archived = ArchivedCacheEntry
type Archived = ArchivedCacheEntry
Source§type Resolver = CacheEntryResolver
type Resolver = CacheEntryResolver
Source§impl Clone for CacheEntry
impl Clone for CacheEntry
Source§fn clone(&self) -> CacheEntry
fn clone(&self) -> CacheEntry
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CacheEntry
impl Debug for CacheEntry
Source§impl<__D: Fallible + ?Sized> Deserialize<CacheEntry, __D> for Archived<CacheEntry>where
Vec<Spanned<Directive>>: Archive,
<Vec<Spanned<Directive>> as Archive>::Archived: Deserialize<Vec<Spanned<Directive>>, __D>,
CachedOptions: Archive,
<CachedOptions as Archive>::Archived: Deserialize<CachedOptions, __D>,
Vec<CachedPlugin>: Archive,
<Vec<CachedPlugin> as Archive>::Archived: Deserialize<Vec<CachedPlugin>, __D>,
Vec<String>: Archive,
<Vec<String> as Archive>::Archived: Deserialize<Vec<String>, __D>,
impl<__D: Fallible + ?Sized> Deserialize<CacheEntry, __D> for Archived<CacheEntry>where
Vec<Spanned<Directive>>: Archive,
<Vec<Spanned<Directive>> as Archive>::Archived: Deserialize<Vec<Spanned<Directive>>, __D>,
CachedOptions: Archive,
<CachedOptions as Archive>::Archived: Deserialize<CachedOptions, __D>,
Vec<CachedPlugin>: Archive,
<Vec<CachedPlugin> as Archive>::Archived: Deserialize<Vec<CachedPlugin>, __D>,
Vec<String>: Archive,
<Vec<String> as Archive>::Archived: Deserialize<Vec<String>, __D>,
Source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<CacheEntry, <__D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<CacheEntry, <__D as Fallible>::Error>
Auto Trait Implementations§
impl Freeze for CacheEntry
impl RefUnwindSafe for CacheEntry
impl Send for CacheEntry
impl Sync for CacheEntry
impl Unpin for CacheEntry
impl UnsafeUnpin for CacheEntry
impl UnwindSafe for CacheEntry
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive, it may be
unsized. Read moreSource§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.