From 4780753fb6c5adb42fa0794695c5527f72d7c4cc Mon Sep 17 00:00:00 2001
From: Hanno Braun <hello@hannobraun.com>
Date: Fri, 13 Dec 2024 20:42:38 +0100
Subject: [PATCH] Prepare to refer to `Vertex` by `Handle`

---
 .../2024-12-09/src/geometry/primitives.rs     |  8 ++++---
 experiments/2024-12-09/src/model.rs           | 24 +++++++++----------
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/experiments/2024-12-09/src/geometry/primitives.rs b/experiments/2024-12-09/src/geometry/primitives.rs
index 8dc9b5673..6fc4dae66 100644
--- a/experiments/2024-12-09/src/geometry/primitives.rs
+++ b/experiments/2024-12-09/src/geometry/primitives.rs
@@ -44,9 +44,11 @@ pub struct Triangle {
     pub vertices: [Vertex; 3],
 }
 
-impl From<[Vertex; 3]> for Triangle {
-    fn from(vertices: [Vertex; 3]) -> Self {
-        Self { vertices }
+impl From<[&Vertex; 3]> for Triangle {
+    fn from(vertices: [&Vertex; 3]) -> Self {
+        Self {
+            vertices: vertices.map(|vertex| *vertex),
+        }
     }
 }
 
diff --git a/experiments/2024-12-09/src/model.rs b/experiments/2024-12-09/src/model.rs
index f87e7e536..aa0e06f0e 100644
--- a/experiments/2024-12-09/src/model.rs
+++ b/experiments/2024-12-09/src/model.rs
@@ -16,16 +16,16 @@ pub fn model(shape: &mut Shape) {
         [a, b, c, d, e, f, g, h].map(|vertex| vertex.get());
 
     shape
-        .triangle([a, e, g]) // left
-        .triangle([a, g, c])
-        .triangle([b, d, h]) // right
-        .triangle([b, h, f])
-        .triangle([a, b, f]) // front
-        .triangle([a, f, e])
-        .triangle([c, h, d]) // back
-        .triangle([c, g, h])
-        .triangle([a, c, b]) // bottom
-        .triangle([b, c, d])
-        .triangle([e, f, h]) // top
-        .triangle([e, h, g]);
+        .triangle([&a, &e, &g]) // left
+        .triangle([&a, &g, &c])
+        .triangle([&b, &d, &h]) // right
+        .triangle([&b, &h, &f])
+        .triangle([&a, &b, &f]) // front
+        .triangle([&a, &f, &e])
+        .triangle([&c, &h, &d]) // back
+        .triangle([&c, &g, &h])
+        .triangle([&a, &c, &b]) // bottom
+        .triangle([&b, &c, &d])
+        .triangle([&e, &f, &h]) // top
+        .triangle([&e, &h, &g]);
 }