Skip to main content

FileIndex

Struct FileIndex 

Source
pub struct FileIndex { /* private fields */ }
Expand description

Index of all known repo-relative file paths for O(1) existence checks.

Wraps a HashSet<String> with helper methods that language resolvers commonly need. Linear-scan helpers (files_with_prefix, files_with_stem) are acceptable at Layer 0 scale — optimize if benchmarks show a hot spot.

Implementations§

Source§

impl FileIndex

Source

pub fn new(paths: impl IntoIterator<Item = String>) -> Self

Create a new FileIndex from an iterator of repo-relative paths.

Source

pub fn new_with_root( root: PathBuf, paths: impl IntoIterator<Item = String>, ) -> Self

Create a FileIndex with a repo root for file content access.

Source

pub fn set_crate_roots(&mut self, roots: Vec<String>)

Set Rust crate root prefixes for workspace resolution. Roots are sorted longest-first so workspace member paths take precedence over the repo-root src/.

Source

pub fn crate_root_for(&self, file_path: &str) -> Option<&str>

Returns the crate root prefix for the given file, if any. For single-crate projects: Some("src/"). For workspace files at crates/foo/src/bar.rs: Some("crates/foo/src/").

Source

pub fn set_workspace_members(&mut self, members: HashMap<String, String>)

Set workspace member mapping (snake_case crate name → crate root path).

Source

pub fn workspace_member_root(&self, crate_name: &str) -> Option<&str>

Returns the crate root path for a workspace member crate name. The first segment of an import path (e.g. "grep_regex" in "grep_regex::matcher::Foo") is the name to look up.

Source

pub fn has_workspace_members(&self) -> bool

True if workspace member mappings are configured.

Source

pub fn set_scala_source_roots(&mut self, roots: Vec<String>)

Set Scala source root prefixes for multi-project sbt resolution.

Source

pub fn scala_source_roots(&self) -> &[String]

Returns the discovered Scala source root prefixes.

Source

pub fn set_ruby_autoload_roots(&mut self, roots: Vec<String>)

Set Ruby/Rails Zeitwerk autoload root directories.

Source

pub fn ruby_autoload_roots(&self) -> &[String]

Returns the discovered Ruby autoload root directories.

Source

pub fn set_ruby_lib_roots(&mut self, roots: Vec<String>)

Set Ruby lib/ root directories for monorepo require resolution.

Source

pub fn ruby_lib_roots(&self) -> &[String]

Returns the discovered Ruby lib/ root directories.

Source

pub fn read_file(&self, rel_path: &str) -> Option<String>

Read a file relative to the index root. Returns None if no root is configured or the file can’t be read. Resolvers that need content access (like Go for go.mod) must tolerate None gracefully.

Source

pub fn contains(&self, path: &str) -> bool

Check if a repo-relative path exists in the index.

Source

pub fn files_with_prefix(&self, prefix: &str) -> Vec<&String>

Find all files whose path starts with the given prefix. Returns references to avoid allocation when only checking existence.

Source

pub fn files_with_stem(&self, stem: &str) -> Vec<&String>

Find all files whose stem (filename without extension) matches. Useful for Go package resolution where foo.go matches package foo.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Fruit for T
where T: Send + Downcast,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more