3个版本 (破坏性)

0.3.0 2022年6月10日
0.2.0 2022年6月3日
0.1.0 2022年4月27日

#19 in #legacy

每月40次下载

MIT许可证

40KB
1K SLoC

ManyVecs

一个提供受GLSL启发的向量结构的库。这些结构对于处理坐标、几何、游戏开发等非常有用。一些功能包括

  • 深入单元测试
  • 支持组件运算符(加法、减法等)
  • 有用的方法,如模长和归一化

这与标准库 Vec 类型无关。

试试看!

use manyvecs::legacy::Vec2;

// Vec2 stores two numbers, X and Y
let v = Vec2::<f32>::new(2.0, -0.5);

println!("{}, {}", v.x(), v.y());
// "2.0, -0.5"

// Operators work on vectors!
// They are applied componenet-wise.
println!("{}", v + 1.0);
// "Vec2(3.0, 0.5)"

// You can even create vecs from tuples
Vec2::from((2.0, 3.0));

这只是几个示例,您可以在 docs.rs 上找到完整的文档。

功能

版本0.1.0和0.2.0使用基于泛型的结构作为其向量。从版本0.3.0开始引入基于宏的结构。这是一个破坏性变更,这就是为什么您可以通过功能来配置这些变更。

注意:在1.0.0中,基于泛型的向量将被完全删除。

功能 描述
legacy 遗留功能启用基于泛型的向量。默认情况下启用,以便向后兼容。
macroed 宏功能启用基于宏的向量。默认情况下禁用。

要启用基于宏的向量,请在您的 Cargo.toml 中包含以下内容。

[dependencies]
manyvecs = { version = "~0.Y.Z", features = ["macroed"] }

要仅启用宏向量,请使用以下内容代替。

[dependencies]
manyvecs = { version = "~0.Y.Z", default-features = false, features = ["macroed"] }

导出内容

宏和遗留功能设计为并行工作。每个都有自己的公共模块。如果仅启用了遗留功能而没有宏,遗留模块的内容将被导出到crate的根目录。请查看以下 lib.rs 中的代码。

#[cfg(feature = "legacy")]
#[cfg(not(feature = "macroed"))]
pub use self::legacy::*;

同样适用于仅使用宏定义而不用旧版本。如果你知道你不会使用其他功能,这很重要,因为你可以直接使用 use manyvecs::Vec2 而不是 manyvecs::macroed::Vec2

稳定性通知

这个库目前是不稳定的。建议你只允许在依赖ManyVecs时进行补丁。

# Cargo.toml
[dependencies]
manyvecs = "~0.Y.Z"

有关波浪线要求的更多信息,请参阅此处

许可证

ManyVecs是在MIT许可证下开发和分发的。

贡献

欢迎贡献!这是我(BD103)发布的第一个Rust crate,因此肯定有改进的空间。

除非明确说明,否则任何有意提交给本项目以供包含的贡献都将按照上述许可进行,不附加任何额外条款或条件。

依赖项

~38KB