summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2022-02-13 12:43:33 -0500
committerTavian Barnes <tavianator@tavianator.com>2022-02-13 12:43:33 -0500
commit4410d88d7a74cacf704d2fd4851db770da542fd4 (patch)
treef218228f3a46924fbbd9d20a0ec5f6040a9ca6c9 /src
parente7b3250dd45b00fe6b49a7bed12410575e1ac274 (diff)
downloadacap-4410d88d7a74cacf704d2fd4851db770da542fd4.tar.xz
coords: Implement for all arrays using const generics
Diffstat (limited to 'src')
-rw-r--r--src/coords.rs33
1 files changed, 10 insertions, 23 deletions
diff --git a/src/coords.rs b/src/coords.rs
index 7c83946..cee89ee 100644
--- a/src/coords.rs
+++ b/src/coords.rs
@@ -38,30 +38,17 @@ impl<T: Value> Coordinates for [T] {
}
/// [`Coordinates`] implementation for arrays.
-macro_rules! array_coordinates {
- ($n:expr) => {
- impl<T: Value> Coordinates for [T; $n] {
- type Value = T;
-
- fn dims(&self) -> usize {
- $n
- }
-
- fn coord(&self, i: usize) -> T {
- self[i]
- }
- }
- };
-}
+impl<T: Value, const N: usize> Coordinates for [T; N] {
+ type Value = T;
+
+ fn dims(&self) -> usize {
+ N
+ }
-array_coordinates!(1);
-array_coordinates!(2);
-array_coordinates!(3);
-array_coordinates!(4);
-array_coordinates!(5);
-array_coordinates!(6);
-array_coordinates!(7);
-array_coordinates!(8);
+ fn coord(&self, i: usize) -> T {
+ self[i]
+ }
+}
/// [`Coordinates`] implemention for vectors.
impl<T: Value> Coordinates for Vec<T> {