We need lifitime annotation, when struct wants to old a reference.
This commit is contained in:
parent
b0e998fb28
commit
352085f8d9
46
src/main.rs
46
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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user