use std::sync::LazyLock; use redb::{Table, TableDefinition, WriteTransaction}; static DATABASE: LazyLock = LazyLock::new(|| { redb::Database::builder() .create("players.redb") .expect("failed to open database") }); const DIFINITION: TableDefinition<'_, u32, Vec> = redb::TableDefinition::new("players"); pub fn write_txn() -> Result { Ok(DATABASE.begin_write()?) } pub fn open_table(write: &WriteTransaction) -> Result>, redb::Error> { Ok(write.open_table(DIFINITION)?) } pub fn init_db() -> Result<(), redb::Error> { let write_txn = DATABASE.begin_write()?; write_txn.open_table(DIFINITION)?; write_txn.commit()?; Ok(()) }