@@ -54,8 +54,9 @@ authors.workspace = true
5454repository.workspace = true
5555rust-version.workspace = true
5656
57+ # Note: written so that it may be copy-pasted to other crates
5758[package .metadata .docs .rs ]
58- features = [" all-databases " , " _unstable-all-types " , " _unstable-doc " , " sqlite-preupdate-hook " ]
59+ features = [" _unstable-docs " ]
5960rustdoc-args = [" --cfg" , " docsrs" ]
6061
6162[features ]
@@ -83,8 +84,13 @@ _unstable-all-types = [
8384 " bit-vec" ,
8485 " bstr"
8586]
87+
8688# Render documentation that wouldn't otherwise be shown (e.g. `sqlx_core::config`).
87- _unstable-doc = []
89+ _unstable-docs = [
90+ " all-databases" ,
91+ " _unstable-all-types" ,
92+ " sqlx-sqlite/_unstable-docs"
93+ ]
8894
8995# Base runtime features without TLS
9096runtime-async-global-executor = [" _rt-async-global-executor" , " sqlx-core/_rt-async-global-executor" , " sqlx-macros?/_rt-async-global-executor" ]
@@ -114,10 +120,32 @@ _sqlite = []
114120any = [" sqlx-core/any" , " sqlx-mysql?/any" , " sqlx-postgres?/any" , " sqlx-sqlite?/any" ]
115121postgres = [" sqlx-postgres" , " sqlx-macros?/postgres" ]
116122mysql = [" sqlx-mysql" , " sqlx-macros?/mysql" ]
117- sqlite = [" _sqlite" , " sqlx-sqlite/bundled" , " sqlx-macros?/sqlite" ]
123+ sqlite = [" sqlite-bundled" , " sqlite-deserialize" , " sqlite-load-extension" , " sqlite-unlock-notify" ]
124+
125+ # SQLite base features
126+ sqlite-bundled = [" _sqlite" , " sqlx-sqlite/bundled" , " sqlx-macros?/sqlite" ]
118127sqlite-unbundled = [" _sqlite" , " sqlx-sqlite/unbundled" , " sqlx-macros?/sqlite-unbundled" ]
128+
129+ # SQLite features using conditionally compiled APIs
130+ # Note: these assume `sqlite-bundled` or `sqlite-unbundled` is also enabled
131+ #
132+ # Enable `SqliteConnection::deserialize()` and `::serialize()`
133+ # Cannot be used with `-DSQLITE_OMIT_DESERIALIZE`; requires `-DSQLITE_ENABLE_DESERIALIZE` on SQLite < 3.36.0
134+ sqlite-deserialize = [" sqlx-sqlite/deserialize" ]
135+
136+ # Enable `SqliteConnectOptions::extension()` and `::extension_with_entrypoint()`.
137+ # Also required to use `drivers.sqlite.unsafe-load-extensions` from `sqlx.toml`.
138+ # Cannot be used with `-DSQLITE_OMIT_LOAD_EXTENSION`
139+ sqlite-load-extension = [" sqlx-sqlite/load-extension" , " sqlx-macros?/sqlite-load-extension" ]
140+
141+ # Enables `sqlite3_preupdate_hook`
142+ # Requires `-DSQLITE_ENABLE_PREUPDATE_HOOK` (set automatically with `sqlite-bundled`)
119143sqlite-preupdate-hook = [" sqlx-sqlite/preupdate-hook" ]
120144
145+ # Enable internal handling of `SQLITE_LOCKED_SHAREDCACHE`
146+ # Requires `-DSQLITE_ENABLE_UNLOCK_NOTIFY` (set automatically with `sqlite-bundled`)
147+ sqlite-unlock-notify = [" sqlx-sqlite/unlock-notify" ]
148+
121149# types
122150json = [" sqlx-core/json" , " sqlx-macros?/json" , " sqlx-mysql?/json" , " sqlx-postgres?/json" , " sqlx-sqlite?/json" ]
123151
@@ -225,8 +253,14 @@ cast_sign_loss = 'deny'
225253# See `clippy.toml`
226254disallowed_methods = ' deny'
227255
228- [lints .rust ]
229- unexpected_cfgs = { level = ' warn' , check-cfg = [' cfg(mariadb, values(any()))' ] }
256+
257+ [lints .rust .unexpected_cfgs ]
258+ level = ' warn'
259+ check-cfg = [
260+ ' cfg(mariadb, values(any()))' ,
261+ ' cfg(sqlite_ipaddr)' ,
262+ ' cfg(sqlite_test_sqlcipher)' ,
263+ ]
230264
231265#
232266# Any
0 commit comments