pub struct IndexState {
pub root: PathBuf,
pub files: HashMap<FileId, IndexedFile>,
pub path_to_id: HashMap<String, FileId>,
pub trigrams: TrigramIndex,
pub words: WordIndex,
pub deps: DepGraph,
pub versions: VersionLog,
pub agents: AgentRegistry,
pub last_built_unix_ms: i64,
pub git_head: Option<String>,
/* private fields */
}Expand description
In-memory index for one workspace. Composed from the per-file table, the trigram + word sub-indexes, the dep graph, the append-only version log, and the agent registry.
Fields§
§root: PathBufCanonicalised workspace root.
files: HashMap<FileId, IndexedFile>File table keyed on stable id.
path_to_id: HashMap<String, FileId>Workspace-relative path → stable id.
trigrams: TrigramIndexTrigram posting list.
words: WordIndexIdentifier-token inverted index.
deps: DepGraphForward + reverse import graph.
versions: VersionLogAppend-only log of file mutations.
agents: AgentRegistryLive agents + advisory locks.
last_built_unix_ms: i64Wall-clock timestamp (ms since epoch) of the most recent rebuild.
git_head: Option<String>Best-effort HEAD SHA, or None if the workspace isn’t a git repo.
Implementations§
Source§impl IndexState
impl IndexState
Sourcepub fn snapshot(&self) -> CodeIndexSnapshot
pub fn snapshot(&self) -> CodeIndexSnapshot
Capture the current state as a CodeIndexSnapshot.
Sourcepub fn from_snapshot(snap: CodeIndexSnapshot) -> Self
pub fn from_snapshot(snap: CodeIndexSnapshot) -> Self
Restore an IndexState from a snapshot. The workspace root is
taken from the snapshot meta; callers can then call
Self::reap_after_recovery to drop stale agent records.
Sourcepub fn reap_after_recovery(&mut self, now_ms: i64)
pub fn reap_after_recovery(&mut self, now_ms: i64)
Drop stale agent records and release any locks held by agents
whose last_seen_ms is older than the configured timeout. Called
at startup after restoring from a snapshot.
Source§impl IndexState
impl IndexState
Sourcepub fn build_from_root(root: &Path) -> (Self, BuildOutcome)
pub fn build_from_root(root: &Path) -> (Self, BuildOutcome)
Build a fresh index over root. Returns the populated state plus a
summary of how many files were indexed vs skipped.
Sourcepub fn reindex_file(&mut self, abs: &Path) -> Option<FileId>
pub fn reindex_file(&mut self, abs: &Path) -> Option<FileId>
Re-index a single file by its absolute path. Returns the id of the
affected file (newly assigned or existing). If the file no longer
exists or fails the indexability/sensitivity filter, any existing
entry under that path is removed and None is returned.
Sourcepub fn remove_file_path(&mut self, abs: &Path)
pub fn remove_file_path(&mut self, abs: &Path)
Remove an existing file from every sub-index. No-op when the file isn’t tracked.
Sourcepub fn lookup_path(&self, raw: &str) -> Option<FileId>
pub fn lookup_path(&self, raw: &str) -> Option<FileId>
Look up a file by either its workspace-relative path or its absolute path inside the workspace root.
Sourcepub fn estimated_bytes(&self) -> usize
pub fn estimated_bytes(&self) -> usize
Estimate the resident memory footprint of every sub-index. Cheap
order-of-magnitude figure surfaced by the stats builtin.
Sourcepub fn absolute_path(&self, rel_or_abs: &str) -> PathBuf
pub fn absolute_path(&self, rel_or_abs: &str) -> PathBuf
Resolve a workspace-relative path against the canonical root.
Used by host builtins that take a path argument and need to
open the underlying file (e.g. read_range, file_hash).
Auto Trait Implementations§
impl Freeze for IndexState
impl RefUnwindSafe for IndexState
impl Send for IndexState
impl Sync for IndexState
impl Unpin for IndexState
impl UnsafeUnpin for IndexState
impl UnwindSafe for IndexState
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> 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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);