Sobre o projeto

better-duck é um cliente Rust para DuckDB projetado para uso embedded, em que o banco de dados roda dentro da aplicação em vez de como um servidor separado. A biblioteca C do DuckDB é compilada junto, portanto nenhum pacote de sistema ou dependência de runtime é necessária — ideal para aplicativos desktop, cross-builds móveis e ambientes semelhantes. O projeto é dividido em crates: better-duck-core (conexões, prepared statements, appender em massa, cobertura de tipos, funções definidas pelo usuário), better-duck-diesel (um backend Diesel 2.3 com query DSL, migrações, pool r2d2 e funções, agregações e operadores SQL específicos do DuckDB), better-duck-macros (macros procedurais para UDFs e derives de dados, incluídas via feature flags) e better-duck-sys (bindings da API C do DuckDB vendorizados). Os recursos principais incluem acesso orientado a linhas, sem Arrow, a linhas e valores; FFI encapsulada para que nenhum código unsafe vaze para o código do usuário; cobertura de tipos do DuckDB como inteiros de todas as larguras, DECIMAL, UUID, BIT, BIGNUM, temporais e tipos compostos LIST/ARRAY/STRUCT/MAP/UNION/ENUM; consultas parametrizadas; um Appender em massa; handles de Database compartilhados com pooling r2d2 e uma fachada async Tokio; e helpers de gerenciamento de extensões. Macros de atributo registram funções Rust comuns como funções escalares, de tabela, de agregação ou de cast, com tipos inferidos a partir das assinaturas. Macros derive mapeiam structs e enums para linhas e tipos do DuckDB (FromRow, ToRow, DuckEnum, DuckStruct), e macros auxiliares cobrem transações e parâmetros. O backend Diesel adiciona CRUD padrão, transações, tipos SQL específicos do DuckDB, uma DSL de funções e operadores do DuckDB, helpers espaciais e gerenciadores de pooling. Feature flags controlam bundling, conversões chrono e decimal, extensões JSON e Parquet, async, pooling, UDFs, derives e bindgen em tempo de build. O README marca o projeto como beta, observando que mudanças incompatíveis são possíveis antes da versão 1.0.