Skip to main content

FileItem

Struct FileItem 

Source
pub struct FileItem {
    pub path: PathBuf,
    pub relative_path: String,
    pub relative_path_lower: String,
    pub file_name: String,
    pub file_name_lower: String,
    pub size: u64,
    pub modified: u64,
    pub access_frecency_score: i64,
    pub modification_frecency_score: i64,
    pub total_frecency_score: i64,
    pub git_status: Option<Status>,
    pub is_binary: bool,
    /* private fields */
}
Expand description

A single indexed file with metadata, frecency scores, and lazy content cache.

File contents are initialized lazily on the first grep access and cached for subsequent searches. On Unix, uses mmap backed by the kernel page cache. On Windows, reads into a heap buffer to avoid holding file handles open.

Thread-safety: OnceLock provides lock-free reads after initialization. Each file is only searched by one rayon worker at a time via par_iter.

Fields§

§path: PathBuf§relative_path: String§relative_path_lower: String§file_name: String§file_name_lower: String§size: u64§modified: u64§access_frecency_score: i64§modification_frecency_score: i64§total_frecency_score: i64§git_status: Option<Status>§is_binary: bool

Implementations§

Source§

impl FileItem

Source

pub fn new(path: PathBuf, base_path: &Path, git_status: Option<Status>) -> Self

Source

pub fn update_frecency_scores( &mut self, tracker: &FrecencyTracker, mode: FFFMode, ) -> Result<(), Error>

Source§

impl FileItem

Source

pub fn new_raw( path: PathBuf, relative_path: String, file_name: String, size: u64, modified: u64, git_status: Option<Status>, is_binary: bool, ) -> Self

Create a new FileItem with all fields specified and an empty (not yet loaded) mmap.

Source

pub fn invalidate_mmap(&mut self)

Invalidate the cached content so the next get_content() call creates a fresh one.

Call this when the background watcher detects that the file has been modified. On Unix, a file that is truncated while mapped can cause SIGBUS. On Windows, the stale buffer simply won’t reflect the new contents. In both cases, invalidating ensures a fresh read on the next access.

Source

pub fn get_content(&self) -> Option<&[u8]>

Get the cached file contents or lazily load them. Returns None if the file is too large, empty, or can’t be opened.

After the first call, this is lock-free (just an atomic load + pointer deref). On Unix, uses mmap backed by the kernel page cache. On Windows, reads into a heap buffer so the file handle is released immediately.

Source

pub fn get_mmap(&self) -> Option<&[u8]>

Backward-compatible alias for get_content.

Trait Implementations§

Source§

impl Clone for FileItem

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Constrainable for FileItem

Source§

fn relative_path(&self) -> &str

The file’s relative path (e.g. “src/main.rs”)
Source§

fn relative_path_lower(&self) -> &str

The file’s lowercased relative path for case-insensitive matching
Source§

fn file_name(&self) -> &str

The file name component (e.g. “main.rs”)
Source§

fn git_status(&self) -> Option<Status>

The git status of this item, if available
Source§

impl Debug for FileItem

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<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
Source§

impl<T> ErasedDestructor for T
where T: 'static,