fixed-vectors

Build

Library implementing fixed-length Vectors meant for representing dimensional values. Tested heavily to ensure safety during use.


Testing

```bash $ cd fixed-vectors $ cargo test ...

If things go well during the tests you should see ok as the test result.

```


Examples

There are various examples implemented within the examples directory to look at for getting started. If you would like to run an example within the examples directory you can run the following commands. bash $ cd fixed-vectors $ cargo run --example [EXAMPLE_NAME]

Written Examples

Voxel Struct Example below shows how a Voxel might be represented as a struct, using a Vector3.

```rust use fixed_vectors::Vector3;

pub struct Voxel { /// Represents the positional value in 3D Space of the [Voxel] pub position: Vector3, } ```

Custom Vector Example below shows how you would create a custom Vector Struct.

```rust use fixedvectors::{Vector, implvector};

struct Vector5 { x: T, y: T, z: T, w: T, v: T, }

impl_vector!(Vector5 { x, y, z, w, v }, 5);

fn main() { println!("Vector5 Name: {}", Vector5::<()>::NAME); println!("Vector5 Length: {}", Vector5::<()>::LEN); println!("Vector5 Size: {}", Vector5::::SIZE);

let vector = Vector5::new(1, 2, 3, 4, 5);

println!("Vector: {}", vector);
println!("Vector Debug: {:?}", vector);
println!("Vector as Array: {:?}", vector.to_array());
println!("Vector as Vec: {:?}", vector.to_vec());

let mut sum = 0;
for i in vector { sum += i; }
println!("Vector Sum: {}", sum);

} ```

Tuplable Vector Example below shows how you would implemented the TuplableVector Trait in a Vector, as it's not currently implemented automatically with the impl_vector! Macro.

```rust use fixedvectors::{TuplableVector, implvector};

struct Vector2 { x: T, y: T, }

impl_vector!(Vector2 { x, y }, 2);

impl TuplableVector { type Output = (T, T);

fn to_tuple(self) -> Self::Output {
    return (self.x, self.y);
}

}

fn main() { let tuple = Vector2::new("Vector", "2").totuple(); println!("Vector as Tuple: {:?}", tuple); asserteq!(tuple, ("Vector", "2")); } ```


License

MIT