quackdb 0.2.0

Ergonomic binding to DuckDB
# QuackDB

Current status: core functionality (connect, query, and retrieve results via Arrow) is usable. Anything more advanced requires you to access the internal, unsafe API, or access FFI directly.

## Roadmap -- 0.2.0

* [x] Appender
* [x] Proper string type: UTF-8, non-null terminated

## Roadmap -- 0.3.0

* [ ] Table functions
* [ ] Replacement scans


## Roadmap -- 0.4.0

* [ ] Row-based iterator
* [ ] Ergonomic types

## Roadmap (Milestone) -- 0.5.0

* [ ] Clean up error types
* [ ] Clean up `&self` and `&mut self` receivers
* [ ] Streaming arrow (optional)
* [ ] Polars support (optional)

## API Level

The main API is the high level, safe API.

`quackdb-internal` exposes low-level wrapper over types from `libduckdb-sys` with Rust types, but without checks.

Raw handles can be used with FFI functions for lowest-level interaction.

### API conventions

* High level API expose low level handle types as pub field
* High level API follow Rust naming
* Low level API wraps raw handle and all basic operations
* Low level API dereferences to raw handle
* Low level API use Rust types
* Low level API follow DuckDB naming