We need lifitime annotation, when struct wants to old a reference.

This commit is contained in:
Stephan Rehfeld 2026-04-22 18:25:24 +02:00
parent b0e998fb28
commit 352085f8d9

View File

@ -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);
}