vector-traits

Crates.iovector-traits
lib.rsvector-traits
version0.3.4
sourcesrc
created_at2023-10-22 13:30:05.452595
updated_at2023-12-08 19:27:24.358946
descriptionRust traits for 2D and 3D vector types.
homepage
repositoryhttps://codeberg.org/eadf/vector_traits_rs
max_upload_size
id1010589
size66,706
eadf (eadf)

documentation

README

crates.io Documentation Workflow dependency status license

Vector-Traits Crate

vector-traits is a Rust crate designed to provide a set of traits for abstracting over different vector implementations and scalar types, offering a unified interface for a basic set of vector operations. This crate facilitates seamless transitions between different vector libraries and scalar precisions (e.g., f32 and f64) without requiring significant code modifications.

Features

  • Abstract over two-dimensional and three-dimensional vectors with GenericVector2 and GenericVector3 traits.
  • Generic scalar trait GenericScalar for a flexible scalar type handling.
  • Basic vector traits HasXY and HasXYZ for custom vector storage types, e.g., FFI types.
  • Seamless transition between different vector libraries like cgmath and glam.
  • Ability to switch between different scalar types (f32, f64) effortlessly.

Supported Vector Implementations

Currently, the following vector types from cgmath and glam libraries are supported:

  • glam::Vec2,glam::DVec2,glam::Vec3,glam::Vec3A and glam::DVec3
  • cgmath::Vector2 andcgmath::Vector3 (for f32 and f64)

Usage

Add vector-traits to your Cargo.toml dependencies along with the desired features:

[dependencies]
vector-traits = { version = "0.3.4", features = ["glam", "cgmath"] }  # only use what you need

Documentation

For a deeper dive into vector-traits functionality, check the documentation generated by cargo doc or browse it online here.

Contributing

We welcome contributions from the community. Feel free to submit pull requests or report issues on our GitHub repository. Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

License

Licensed under either of

at your option.

Commit count: 0

cargo fmt