/vectora

A Rust library for n-dimensional vector computation with real and complex scalar data

Primary LanguageRustApache License 2.0Apache-2.0

A Rust library for vector computation

Crates.io docs.rs GitHub

Test Status

stable toolchain unit tests beta toolchain unit tests clippy lints rustfmt check

About

Vectora is a library for n-dimensional vector computation with real and complex scalar types. The main library entry point is the Vector struct. Please see the Gettting Started Guide for a detailed library API overview with examples.

User documentation

User documentation is available at https://docs.rs/vectora.

Minimum Rust Version Compatibility Policy

This project parameterizes generics by constants and relies on the constant generics feature support stabilized in Rust v1.51.0.

The minimum supported rustc version is believed to be v1.51.0.

Include Vectora in Your Project

Import the library in the [dependencies] section of your Cargo.toml file:

Cargo.toml

[dependencies]
vectora = "0.8.1"

Developer documentation

Contributing

L4 Header Issues

The issue tracker is available on the GitHub repository. Don't be shy. Please report any issues that you identify so that we can address them.

L4 Header Source contributions

Contributions are welcomed. Submit your changes as a GitHub pull request. Please add new tests for source contributions that our current test suite does not cover.

L4 Header Clone the repository

git clone https://github.com/chrissimpkins/vectora.git

L4 Header Testing

The project is tested with the latest GitHub Actions macOS, Linux (Ubuntu), and Windows environment runners using the stable and beta rustc toolchains.

Unit and doc test suite

Edit the source files, then run the unit and doc test suite locally with the command:

cargo test
Unit tests only
cargo test --lib
Doc tests only
cargo test --doc
Clippy lints

Clippy lints are not executed with the above commands. Use the following to lint Rust source files with clippy:

cargo clippy -- -D warnings
Fuzzing

This crate supports cargo fuzz + libFuzzer based fuzzing with the nightly rustc toolchain in supported environments.

Install the rustc nightly toolchain.

Then, install cargo-fuzz with:

cargo +nightly install -f cargo-fuzz

Edit the fuzz target source in the fuzz/fuzz_vectora.rs file and begin fuzzing with the command:

cargo +nightly fuzz run fuzz_vectora

Please see the Fuzzing with cargo-fuzz chapter of the Rust Fuzz book for additional documentation.

L4 Header Documentation contributions

The docs.rs documentation is authored in the Rust source files. Edit the text and build a local version of the project documentation for review with the command:

cargo doc

The documentation index.html page can be found on the following relative path from the repository's root: target/doc/vectora/index.html.

Submit your doc edits as a GitHub pull request.

Changes

Please see CHANGELOG.md.

License

Vectora is released under the Apache License, v2.0.