#![allow(unsafe_code)]
#[cfg(not(all(target_family = "wasm", target_os = "unknown")))]
extern crate libsqlite3_sys as ffi;
#[cfg(all(target_family = "wasm", target_os = "unknown"))]
use sqlite_wasm_rs as ffi;
use std::ops::Deref;
#[derive(Debug)]
pub struct SerializedDatabase {
data: *mut u8,
len: usize,
}
impl SerializedDatabase {
pub(crate) unsafe fn new(data: *mut u8, len: usize) -> Self {
Self { data, len }
}
pub fn as_slice(&self) -> &[u8] {
unsafe { std::slice::from_raw_parts(self.data, self.len) }
}
}
impl Deref for SerializedDatabase {
type Target = [u8];
fn deref(&self) -> &Self::Target {
self.as_slice()
}
}
impl Drop for SerializedDatabase {
fn drop(&mut self) {
unsafe {
ffi::sqlite3_free(self.data as _);
}
}
}