From 352085f8d9cd3509fbdc6f7bea5d2e47e0392498 Mon Sep 17 00:00:00 2001 From: Stephan Rehfeld Date: Wed, 22 Apr 2026 18:25:24 +0200 Subject: [PATCH] We need lifitime annotation, when struct wants to old a reference. --- src/main.rs | 46 ++++++++++++++-------------------------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/src/main.rs b/src/main.rs index cc74d50..378aec2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,6 +19,16 @@ impl RGB { } } +struct Container<'a> { + value: &'a RGB, +} + +impl<'a> Container<'a> { + fn new(value: &RGB) -> Container { + Container { value } + } +} + struct Image { width: usize, height: usize, @@ -59,40 +69,12 @@ impl Image { } } -fn manipulate_first_pixel(image: &mut Image) { - let c = image.get_mut(0, 0); - - c.red = 0; -} - fn main() { - let mut image = Image::white_image(640, 480); + let image = Image::white_image(640, 480); - manipulate_first_pixel(&mut image); + let c = image.get(0, 0); - let mut_c1 = image.get_mut(0, 0); + let container = Container::new(c); - println!( - "red = {}, green = {}, blue = {}", - mut_c1.red, mut_c1.green, mut_c1.blue - ); - - let mut_c2 = image.get_mut(0, 0); - - /*let c1 = image.get(0, 0); - let c2 = image.get(0, 0); - let c3 = image.get(0, 0); - let c4 = image.get(0, 0); - let c5 = image.get(0, 0); - - println!("red = {}, green = {}, blue = {}", c1.red, c1.green, c1.blue); - println!("red = {}, green = {}, blue = {}", c2.red, c2.green, c2.blue); - println!("red = {}, green = {}, blue = {}", c3.red, c3.green, c3.blue); - println!("red = {}, green = {}, blue = {}", c4.red, c4.green, c4.blue); - println!("red = {}, green = {}, blue = {}", c5.red, c5.green, c5.blue);*/ - - println!( - "red = {}, green = {}, blue = {}", - mut_c2.red, mut_c2.green, mut_c2.blue - ); + println!("{}", container.value.blue); }