init()
The .init() method initializes a new unconnected instance of the client. This is typically used to create a global, static instance of the client.
Method SyntaxSurreal::init()
use std::sync::LazyLock; use surrealdb::engine::remote::ws::{Client, Ws}; use surrealdb::Surreal; static DB: LazyLock<Surreal<Client>> = LazyLock::new(Surreal::init); async fn main() -> surrealdb::Result<()> { // Connect to the database DB.connect::<Ws>("127.0.0.1:8000").await?; Ok(()) }
Surreal::init()
can also be used to create an instance of Surreal<Any>
, allowing you to choose at runtime which way to connect.
use std::env; use std::sync::LazyLock; use surrealdb::engine::any::Any; use surrealdb::Surreal; static DB: LazyLock<Surreal<Any>> = LazyLock::new(Surreal::init); async fn main() -> surrealdb::Result<()> { // Choose an endpoint at runtime using the `DB_ENDPOINT` environment variable // or fallback to the memory engine. let endpoint = env::var("DB_ENDPOINT").unwrap_or_else(|_| "mem://".to_owned()); DB.connect(endpoint).await?; Ok(()) }