everything-direct

Crates.ioeverything-direct
lib.rseverything-direct
version0.1.0
created_at2025-10-25 06:40:21.948205+00
updated_at2025-10-25 06:40:21.948205+00
descriptionDirect IPC bindings for Everything Search Engine on Windows.
homepage
repositoryhttps://github.com/BlueGlassBlock/everything-direct
max_upload_size
id1899790
size81,283
Nyuan Zhang (BlueGlassBlock)

documentation

README

everything-direct

Raw IPC bindings for the Everything search engine on Windows.

This crate provides low-level, DLL-free access to Everything's powerful file search capabilities through direct Windows IPC (Inter-Process Communication). Unlike the official SDK, no external DLL is required—making it ideal for Rust applications that need minimal dependencies.

Features

  • No DLL Required - Pure Rust implementation using Windows IPC
  • Fast File Search - Leverage Everything's instant search capabilities
  • Rich Metadata - Query file size, dates, attributes, and more
  • Advanced Filtering - Case-sensitive, regex, path matching, and custom filters
  • Flexible Sorting - Sort by name, size, date, or any indexed property
  • Pagination Support - Handle large result sets efficiently
  • Version Detection - Query Everything's version and capabilities
  • Thread-Safe - Safe to use from multiple threads

Prerequisites

  • Windows operating system
  • Everything must be installed and running

Quick Start

Add this to your Cargo.toml:

[dependencies]
everything-direct = "0.1.0"
windows = { version = "0.62", features = ["Win32_Foundation"] }

Basic Example

use everything_direct::{EverythingClient, QueryInfo, RequestFlags};

fn main() -> windows::core::Result<()> {
    // Connect to Everything
    let client = EverythingClient::try_new(None)?;
    
    // Check if database is ready
    if !client.is_db_loaded() {
        println!("Everything database is still loading...");
        return Ok(());
    }
    
    // Search for PDF files
    let query = QueryInfo::new("*.pdf")
        .request_flag(RequestFlags::NAME | RequestFlags::PATH | RequestFlags::SIZE)
        .max_results(10);
    
    let results = client.query(&query)?;
    
    println!("Found {} total results", results.total_items);
    for item in results.items {
        println!("{:?} - {:?} ({:?} bytes)", 
            item.name, item.path, item.size);
    }
    
    Ok(())
}

Version Information

use everything_direct::EverythingClient;

fn main() -> windows::core::Result<()> {
    let client = EverythingClient::try_new(None)?;
    
    let (major, minor, revision, build, target) = client.get_build_info();
    println!("Everything version: {}.{}.{}.{} ({})", 
        major, minor, revision, build, target);
    
    println!("Running as admin: {}", client.is_admin());
    println!("Database loaded: {}", client.is_db_loaded());
    
    Ok(())
}

License

MIT OR Apache-2.0

Commit count: 0

cargo fmt