From 36c16d053e46ec6ab94f6847533db1196a74a427 Mon Sep 17 00:00:00 2001 From: Stephan Rehfeld Date: Wed, 27 May 2026 18:27:00 +0200 Subject: [PATCH] We can create Polymorphism using enums --- src/geometry.rs | 16 ++++++++++++++++ src/main.rs | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/geometry.rs b/src/geometry.rs index 4597a75..dd7306b 100644 --- a/src/geometry.rs +++ b/src/geometry.rs @@ -33,6 +33,22 @@ pub enum Geometry { Line(Line), } +impl Geometry { + pub fn greet(&self) { + match self { + Geometry::Sphere(_) => { + println!("Sphere!"); + } + Geometry::Line(_) => { + println!("Line!"); + } + Geometry::Plane(_) => { + println!("Plane!"); + } + } + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/main.rs b/src/main.rs index 7181bf2..79df7ab 100644 --- a/src/main.rs +++ b/src/main.rs @@ -61,6 +61,9 @@ impl RenderableGeometry { fn main() { let tex = Rc::new(Texture::load_texture()); + let sphere = Geometry::Sphere(Sphere::new(Point3::new(0.0, 0.0, 0.0), 1.0)); + sphere.greet(); + let geo1 = RenderableGeometry::new( Mat4x4::ident(), Geometry::Sphere(Sphere::new(Point3::new(0.0, 0.0, 0.0), 1.0)),