Skip to main content
better-duck-core keeps its dependency tree lean by putting almost everything behind a Cargo feature. This page lists every feature the core crate defines, grouped by purpose, with what each turns on, which other features it implies, and when you’d reach for it.

Defaults and opting out

The default feature set is ["chrono", "decimal"]:
Opt out of the defaults and pick features à la carte with default-features = false:
Pin the exact pre-release version — Cargo’s default match excludes pre-releases. See Installation and Versioning.

Date, time & numeric types

These change which Rust type a temporal / numeric column reads as — see Type system.
chrono and the native date/time path are mutually exclusive for the read type — only one set of DuckValue temporal conversions compiles at a time. time is an independent bind/append path that coexists with either.

Bundled DuckDB extensions

These compile the extension straight into the embedded static library — there is no runtime INSTALL / LOAD. See Extensions for bundled-vs-runtime guidance.
Each bundled extension recompiles a DuckDB variant, so these features make the build noticeably slower. See Installation.

Data interop

Enabling udf turns the columnar APIs on too — they share the same vector / data-chunk machinery. Enable columnar explicitly only when you want those APIs without the proc-macro dependency udf pulls in. See columnar access.

Concurrency

See async & pooling. async + pool together unlock AsyncPool.

Macros: UDFs & derives

Both come from better-duck-macros, reached through core — you never depend on the macros crate directly. See UDFs and data derives.

Advanced

loadable-extension changes the linking model — no DuckDB is linked in. Don’t enable it for a normal embedded application.

Feature implications at a glance

A few features turn others on automatically. Enabling the left turns on everything to its right:
The smallest useful footprint — row-oriented access with chrono/rust_decimal types.

Choosing an API

A decision tree for which features and crates fit your task.

Architecture

How features flow down to the vendored DuckDB in -sys.

Type system

How chrono / decimal / uuid change the read type.

Core crate

The APIs these features unlock.