Skip to content

Welcome to RayforceDB Rust!

Built for Rust

rayforce-rs provides safe, ergonomic Rust bindings for RayforceDB - the ultra-fast columnar database.

Why Rust?

RayforceDB is written in pure C for maximum performance. rayforce-rs brings that performance to Rust with:

  • Memory Safety - No null pointers, no buffer overflows, no data races
  • Zero-Cost Abstractions - Idiomatic Rust API that compiles to efficient C calls
  • Fearless Concurrency - Share data safely across threads
  • Type Safety - Catch errors at compile time, not runtime

Quick Overview

use rayforce::{Rayforce, RayI64, RayVector, RayTable};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Initialize RayforceDB runtime
    let ray = Rayforce::new()?;

    // Create typed values
    let price = RayI64::from_value(100);
    let prices: RayVector<i64> = RayVector::from_iter([100, 200, 300]);

    // Evaluate expressions
    let result = ray.eval("(+ 1 2 3)")?;
    println!("1 + 2 + 3 = {}", result);

    Ok(())
}

Feature Highlights

  • Blazing Fast

    Sub-millisecond query performance on analytical workloads through columnar storage and vectorized operations.

  • Rust Idiomatic

    Familiar patterns: From/Into traits, iterators, Result error handling, and smart pointers.

  • Full API Coverage

    All RayforceDB types: scalars, vectors, lists, dicts, tables. All queries: select, update, insert, upsert, joins.

  • IPC Support

    Connect to remote RayforceDB instances with async-ready networking.

What's Next?

  1. Installation - Add rayforce-rs to your project
  2. Quick Start - Build your first application
  3. API Reference - Explore the full API

System Requirements

  • Rust: 1.70 or later
  • OS: Linux, macOS (Windows support coming soon)
  • Build Tools: C compiler (gcc/clang) for building the RayforceDB C library

Need Help?

Join the RayforceDB Zulip community or open an issue on GitHub.