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.
Embedded database options
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 (
RocksDborSurrealKV) - Persistent storage on disk using RocksDB or SurrealKV storage engines. Data persists across connections and application restarts.
Quick example
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.