diff --git a/src/main.rs b/src/main.rs index 657fb0a..7181bf2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ use hello::geometry::{self, Geometry, Sphere}; use hello::math::{Mat4x4, Point3}; +use std::rc::Rc; + #[derive(Clone)] struct RGB { red: f64, @@ -43,11 +45,11 @@ impl Texture { struct RenderableGeometry { transform: Mat4x4, geometry: Geometry, - texture: Texture, + texture: Rc, } impl RenderableGeometry { - fn new(transform: Mat4x4, geometry: Geometry, texture: Texture) -> RenderableGeometry { + fn new(transform: Mat4x4, geometry: Geometry, texture: Rc) -> RenderableGeometry { RenderableGeometry { transform, geometry, @@ -57,7 +59,7 @@ impl RenderableGeometry { } fn main() { - let tex = Texture::load_texture(); + let tex = Rc::new(Texture::load_texture()); let geo1 = RenderableGeometry::new( Mat4x4::ident(), @@ -76,4 +78,6 @@ fn main() { Geometry::Sphere(Sphere::new(Point3::new(2.0, 0.0, 0.0), 1.0)), tex.clone(), ); + + println!("Reference counter = {}", Rc::strong_count(&tex)); }