SFML community forums
Bindings - other languages => General => Topic started by: weremsoft on December 13, 2018, 08:35:03 pm
-
Anyone knows how to update the texture in rust? I have the following:
let mut image = Image::from_color(WIDTH, HEIGHT, &Color::GREEN).unwrap();
let mut texture = Texture::from_image(&image).unwrap();
let sprite = Sprite::with_texture(&texture); // -------- immutable borrow occurs here
texture.update_from_image(&image, 0, 0); // ERROR!!! --- cannot borrow `texture` as mutable because it is also borrowed as immutable
Thanks
-
This looks like a scenario where RefCell<> would come in handy. You're trying to mutate something that already has an immutable borrow out there, so maybe you could do:
let mut image = Image::from_color(WIDTH, HEIGHT, &Color::GREEN).unwrap();
let texture = RefCell<Texture>::new(Texture::from_image(&image).unwrap());
let sprite = Sprite::with_texture(texture.borrow());
texture.borrow_mut().update_from_image(&image, 0, 0);
i have NOT tested this, nor have i actually used RefCell before :D I just remember this from my learnings.
https://doc.rust-lang.org/book/ch15-05-interior-mutability.html (https://doc.rust-lang.org/book/ch15-05-interior-mutability.html)
Edit: yeah no that didn't work at all lol it just panics, back to the drawing board