es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
error[E0502]: no se puede tomar prestado
glfwcomo mutable porque también se toma prestado como inmutable
--› 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 de
glfwen 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

“`

Tags:  ,

Answer

  1. Avatar for 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 cierre with_primary_monitor y en una declaración separada como esta:

    let mut glfw = glfw::init(glfw::FAIL_ON_ERRORS).unwrap();
    let mut window = glfw.create_window(300, 300, "Ventana", glfw::WindowMode::Windowed)
        .expect("Error al crear la ventana GLFW");
    glfw.with_primary_monitor(|_, m| {
            window.set_fullscreen(m.map_or(glfw::WindowMode::Windowed, |m| glfw::WindowMode::FullScreen(m)))
        });
    

    Esto separa el préstamo de glfw y la creación de la ventana, evitando cualquier conflicto.

Comments are closed.