fixed-vectors

GitHub Workflow Status Crates.io Crates.io Lines of code GitHub Repo stars

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

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);
}

}

impl From<(T, T)> for Vector2 { fn from(tuple: (T, T)) -> Self { return Self { x: tuple.0, y: tuple.1, }; } }

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


License

MIT