3个版本 (破坏性)
0.3.0 | 2022年6月10日 |
---|---|
0.2.0 | 2022年6月3日 |
0.1.0 | 2022年4月27日 |
#19 in #legacy
每月40次下载
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