We can create Polymorphism using enums

This commit is contained in:
Stephan Rehfeld 2026-05-27 18:27:00 +02:00
parent 50eabecfe9
commit 36c16d053e
2 changed files with 19 additions and 0 deletions

View File

@ -33,6 +33,22 @@ pub enum Geometry {
Line(Line), Line(Line),
} }
impl Geometry {
pub fn greet(&self) {
match self {
Geometry::Sphere(_) => {
println!("Sphere!");
}
Geometry::Line(_) => {
println!("Line!");
}
Geometry::Plane(_) => {
println!("Plane!");
}
}
}
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;

View File

@ -61,6 +61,9 @@ impl RenderableGeometry {
fn main() { fn main() {
let tex = Rc::new(Texture::load_texture()); 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( let geo1 = RenderableGeometry::new(
Mat4x4::ident(), Mat4x4::ident(),
Geometry::Sphere(Sphere::new(Point3::new(0.0, 0.0, 0.0), 1.0)), Geometry::Sphere(Sphere::new(Point3::new(0.0, 0.0, 0.0), 1.0)),