Vector Basis Traits
Low-level traits for generic access to vector basis components (e.g., x, y, z). Builds directly on vector-space.
⚠️ Recommended for interop only (like FFI with render engines, serialization). Prefer vector-space traits for math operations—avoid direct component access in generic code.
Quick Start
use ;
use VectorSpace;
;
// Convenience via Bases (auto-implemented)
let v = Vec2;
assert_eq!; // x-component
assert_eq!; // y-component
let v2 = v.; // Set y to 3.0
assert_eq!;
let unit_x = ; // (1.0, 0.0)
let scaled_x = ; // (5.0, 0.0)
Features
Basis<I>: Const-generic index access (I=0→ x,I=1→ y, etc.) ->unit_basis(),basis_of(mag),basis(&self),basis_mut(&mut self),with_basis(self, mag)Bases: Blanket impl overBasis<I>for convenience (bases::<I>(), etc.)- Zero-cost: Inline, no allocations
no_std: Full support- Interop-focused: Safe for engines like wgpu/OpenGL (pass components directly)
- Dimension-generic: Both 2D and 3D vectors can implement
Basis<0>andBasis<1>, which makes it possible to use both 2D and 3D vectors for a 2D rendering engine using this crate
When to Use
- Yes: Extracting
v.bases::<2>()for GPU buffers or JSON serialization. - No: Math ops—use
InnerSpace::project()etc. fromvector-spaceinstead.