sqlite_tiny/
lib.rs

1#![doc = include_str!("../README.md")]
2// Clippy lints
3#![warn(clippy::large_stack_arrays)]
4#![warn(clippy::arithmetic_side_effects)]
5#![warn(clippy::expect_used)]
6#![warn(clippy::unwrap_used)]
7#![warn(clippy::indexing_slicing)]
8#![warn(clippy::panic)]
9#![warn(clippy::todo)]
10#![warn(clippy::unimplemented)]
11#![warn(clippy::unreachable)]
12#![warn(clippy::missing_panics_doc)]
13#![warn(clippy::allow_attributes_without_reason)]
14#![warn(clippy::cognitive_complexity)]
15
16pub mod api;
17pub mod error;
18pub mod ffi;
19
20#[cfg(feature = "api")]
21pub use api::sqlite::Sqlite;
22
23/// Returns the semver tuple for the distributed sqlite version as `(major, minor, patch)`-tuple
24pub fn version() -> (i32, i32, i32) {
25    // Get version from lib
26    let version = unsafe { ffi::sqlite3_libversion_number() };
27
28    // Split version integer
29    let major = (version / 1_000_000) % 1000;
30    let minor = (version / 1_000) % 1000;
31    let patch = version % 1000;
32    (major, minor, patch)
33}
34
35/// Tests the version tuple
36#[test]
37fn assert_version() {
38    let version = version();
39    assert_eq!(version, (3, 49, 1), "Invalid SQLite version");
40}