Al intentar establecer la ventana de glfw en pantalla completa: no se puede tomar prestado `glfw` como mutable porque también se ha tomado prestado como inmutable.
fn main() {
let mut glfw = glfw::init(glfw::FAIL_ON_ERRORS).unwrap();
// | El error ocurre aquí
let (mut window, events) = glfw.with_primary_monitor(|_, m| {
glfw.create_window(300, 300, "Window",
m.map_or(glfw::WindowMode::Windowed, |m| glfw::WindowMode::FullScreen(m)))
}).expect("Fallo al crear ventana GLFW");
}
El error exacto es:
none
glfw
error[E0502]: no se puede tomar prestadocomo mutable porque también se toma prestado como inmutable
glfw
--› src/main.rs:5:32
|
5 | let (mut window, events) = glfw.with_primary_monitor(|_, m| {
| ^ -------------------- ------ aquí ocurre el préstamo inmutable
| | |
| ________________________________| préstamo inmutable usado luego en la llamada
| |
6 | | glfw.create_window(300, 300, 'Window',
| | ---- el primer préstamo ocurre debido al uso deen la clausura
7 | | m.map_or(glfw::WindowMode::Windowed, |m| glfw::WindowMode::FullScreen(m)))
8 | | }).expect("Fallo al crear ventana GLFW");
| |______^ aquí ocurre el préstamo mutable
“`
davy.ai
El error se debe a un conflicto de préstamo donde
glfw
se presta tanto como inmutable en el cierre como mutable en la llamada de expectativa. Para solucionar el error, mueva la creación de la ventana fuera del cierrewith_primary_monitor
y en una declaración separada como esta:Esto separa el préstamo de
glfw
y la creación de la ventana, evitando cualquier conflicto.