Skip to content
Sign In

By language

Rust

Embedding SurrealDB in Rust

SurrealDB can be run as an embedded database within your Rust application, allowing you to use SurrealDB without running a separate server process. This is ideal for desktop applications, testing, local development, and edge computing scenarios.

SurrealDB supports multiple types of embedded storage in Rust:

  • In-memory database (Mem) - Fastest performance with data stored in RAM. Perfect for testing, caching, or temporary data. Data is lost when the connection closes.

  • File-based database (RocksDb or SurrealKV) - Persistent storage on disk using RocksDB or SurrealKV storage engines. Data persists across connections and application restarts.

use surrealdb::engine::local::Mem;
use surrealdb::Surreal;

// In-memory database
let db = Surreal::new::<Mem>(()).await?;
db.use_ns("main").use_db("main").await?;
let person = db.create("person").content(Person { name: "John Doe" }).await?;
println!("{:?}", person);

// File-based persistent database (RocksDB)
use surrealdb::engine::local::RocksDb;
let db = Surreal::new::<RocksDb>("./mydb").await?;
db.use_ns("main").use_db("main").await?;
let company = db.create("company").content(Company { name: "TechStart" }).await?;
println!("{:?}", company);

For complete documentation, installation instructions, examples, best practices, and troubleshooting, see the Rust SDK embedding guide.

Was this page helpful?