2 个版本
0.1.1 | 2022年5月17日 |
---|---|
0.1.0 | 2022年5月17日 |
#1257 in Rust 模式
10KB
110 行
Axmac
1-4 维数据结构的可读索引宏。
问题
你是否曾尝试过这样索引集合
let point3d = [0.32, 1.2, 10.7];
let first = point3d[0];
let next = point3d[1];
// ...
相信我,这会很快变得令人烦恼。
axmac crate 被设计用来解决你的索引问题。
基本用法
此 crate 提供了宏 ax!
,axs!
和 axr!
,这些宏将标识符 x,y,z 和 w 转换为 usize
值。
ax! (axis)
将单个标识符转换为 usize
// Note:
assert_eq!(ax!(x), 0usize);
assert_eq!(ax!(y), 1);
assert_eq!(ax!(z), 2);
assert_eq!(ax!(w), 3);
let arr = ["a", "b", "c", "d"];
assert_eq!(arr[ax!(y)], "b");
assert_eq!(arr[ax!(z)], "c");
axr! (axis range)
将标识符范围和/或表达式转换为 usize
的范围
// Here are just a few of the variations
let range1 = axr!(x..=z);
let range2 = axr!(z..4);
let range3 = axr!((1)..z);
assert_eq!(range1, 0..=3);
assert_eq!(range2, 2..4);
assert_eq!(range3, 1..2);
let arr = ["a", "b", "c", "d"];
assert_eq!(arr[range1], ["a", "b", "c"]);
assert_eq!(arr[range2], ["c", "d"]);
assert_eq!(arr[range3], ["b"]);
axs! (axes)
将标识符数组转换为 usize
数组
let array = axs![x, y, x, w];
assert_eq!(array, [0, 1, 0, 3]);
let array = axs![z; 4];
assert_eq!(array, [2, 2, 2, 2]);
贡献
对代码库、文档、README(或任何东西)的任何建议都非常欢迎!
如果有任何问题或查询,请在我们的 Github 页面上提交一个问题。
许可
此 crate 可在 MIT
和/或 Apache2.0
许可证下使用。