hektor 0.2.1

A library for hekkin vectors.
Documentation
[![License:0BSD](https://img.shields.io/badge/License-0BSD-brightgreen.svg)](https://opensource.org/licenses/FPL-1.0.0)
![Minimum Rust Version](https://img.shields.io/badge/Min%20Rust-1.36-green.svg)
[![travis.ci](https://travis-ci.org/Lokathor/hektor.svg?branch=master)](https://travis-ci.org/Lokathor/hektor)
[![AppVeyor](https://ci.appveyor.com/api/projects/status/7nh0q08kwngyi3mv/branch/master?svg=true)](https://ci.appveyor.com/project/Lokathor/hektor/branch/master)
[![crates.io](https://img.shields.io/crates/v/hektor.svg)](https://crates.io/crates/hektor)
[![docs.rs](https://docs.rs/hektor/badge.svg)](https://docs.rs/hektor/)

CI coverage:
* Builds on: `x86`, `x86_64`, `wasm32`, `armv7`, `aarch64`, `thumbv7neon`
* Tests on: `x86`, `x86_64`, `wasm32`

If you're a CI pro, please submit a PR that gives even more CI coverage!

# hektor

A library for hekkin vectors.

Goals:
* `f32` Vectors of dimension 2, 3, and 4.
* `f32` Matrices with one vector per column (aka "column-major"). This is
  optimal for uploading into OpenGL or Vulkan with a GLSL shader.
* `f32` Quaternions.

**STATUS: NOT READY FOR USE**

## Code Organization Details

Code is largely organized with one type per module. These modules are made part
of the crate by having `lib.rs` do the following for each one:

```rust
mod foo;
pub use foo::*;
```

The combination of a private module and a `pub use` of the content of said
module causes the outside world see all of the content of the `foo` module as
being _directly_ within the crate's top level module. This is easiest on end
users, without forcing us to literally put the entire crate in a single file.

Tests are organized as one test file per operation group. This is a lot easier
to keep track of when adding one operation at a time and checking that it's
implemented for each appropriate type.

## Inline Policy

* Any "accessor" and "view" style methods are marked `#[inline(always)]`.
* Most other methods are simply marked `#[inline]`.
* Formatting methods are not even marked for inlining.
* If it can be shown that insufficent inlines are the cause of a slowdown
  then we can upgrade a particular method to be `#[inline(always)]`, but
  there must first be some sort of benchmark demonstrating the issue.