sqlite-wasm-rs-0.1.4 has been yanked.
SQLite Wasm Rust
Wrap the official sqlite-wasm
, and expect to provide a usable C-like API.
Usage
use sqlite_wasm_rs::export as ffi;
use std::ffi::CString;
async fn open_db() -> anyhow::Result<()> {
let sqlite = ffi::init_sqlite().await?;
let mut db = std::ptr::null_mut();
let filename = CString::new("mydb").unwrap();
let vfs = CString::new("opfs").unwrap();
let ret = unsafe {
ffi::sqlite3_open_v2(
filename.as_ptr(),
&mut db as *mut _,
ffi::SQLITE_OPEN_READWRITE | ffi::SQLITE_OPEN_CREATE,
vfs.as_ptr(),
)
};
assert_eq!(ffi::SQLITE_OK, ret);
sqlite.install_opfs_sahpool(None).await?;
let mut db = std::ptr::null_mut();
let filename = CString::new("mydb").unwrap();
let vfs = CString::new("opfs-sahpool").unwrap();
let ret = unsafe {
ffi::sqlite3_open_v2(
filename.as_ptr(),
&mut db as *mut _,
ffi::SQLITE_OPEN_READWRITE | ffi::SQLITE_OPEN_CREATE,
vfs.as_ptr(),
)
};
assert_eq!(ffi::SQLITE_OK, ret);
Ok(())
}
Why vendor sqlite-wasm
- sqlite-wasm wrap some codes that are very convenient for JS, but difficult to use for rust.
- Some sqlite C-API are not exported.
Change history: https://github.com/Spxg/sqlite
Related Project
sqlite-wasm
: SQLite Wasm conveniently wrapped as an ES Module.
sqlite-web-rs
: A SQLite WebAssembly backend for Diesel.
rusqlite
: Ergonomic bindings to SQLite for Rust.