- project is a monorepo Rust workspace, java bindings in
/java, python bindings in/vortex-python - run
cargo build -pto build a specific crate - use
cargo clippy --all-targets --all-featuresto make sure a project is free of lint issues
vortex-bufferdefines zero-copy alignedBuffer<T>andBufferMut<T>that are guaranteed to be aligned toT(or whatever requested runtime alignment).vortex-dtypecontains the basicDTypelogical type enum that is the basis of the Vortex type systemvortex-arraycontains the basicArraytrait, as well as several encodings which impl that trait for each encoding. It includes all of most of the Apache Arrow encodings.- More exotic compressed encodings live in the crates inside of
/encodings/* - File IO is defined in
vortex-file. It uses the concept of aLayoutReaderdefined invortex-layoutcrate. /vortex-pythoncontains the python bindings. rst flavored docs for the project are in/docs
- Prefer
impl AsRef<T>to&Tfor public interfaces where possible, e.g.impl AsRef<Path> - avoid usage of unsafe where not necessary, use zero-cost safe abstractions wherever possible, or cheap non-zero-cost abstractions.
- Every new public API definition must have a doc comment. Examples are nice to have but not strictly required.
- Use
vortex_err!to create aVortexErrorwith a format string andvortex_bail!to do the same but immediately return it as aVortexResult<T>to the surrounding context.