diesel/sqlite/connection/
serialized_database.rs1#![allow(unsafe_code)]
2#[cfg(not(all(target_family = "wasm", target_os = "unknown")))]
3extern crate libsqlite3_sys as ffi;
4
5#[cfg(all(target_family = "wasm", target_os = "unknown"))]
6use sqlite_wasm_rs as ffi;
7
8use std::ops::Deref;
9
10#[derive(Debug)]
13pub struct SerializedDatabase {
14 data: *mut u8,
15 len: usize,
16}
17
18impl SerializedDatabase {
19 pub(crate) unsafe fn new(data: *mut u8, len: usize) -> Self {
24 Self { data, len }
25 }
26
27 pub fn as_slice(&self) -> &[u8] {
29 unsafe { std::slice::from_raw_parts(self.data, self.len) }
31 }
32}
33
34impl Deref for SerializedDatabase {
35 type Target = [u8];
36
37 fn deref(&self) -> &Self::Target {
38 self.as_slice()
39 }
40}
41
42impl Drop for SerializedDatabase {
43 fn drop(&mut self) {
45 unsafe {
46 ffi::sqlite3_free(self.data as _);
47 }
48 }
49}