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.

¿Por qué no se genera ninguna impresión al usar #[derive(Debug)] en Rust en Jupyter Notebook?

Soy nuevo en el estudio de Rust. Cuando intento ejecutar algunos códigos escritos en Rust en jupyter-notebook, no puedo obtener ninguna salida impresa. pero se puede ejecutar a través de vscode o la terminal.
sin salida impresa en jupyter-notebook

Aquí está mi código:

// Deriva la implementación de <code>fmt::Debug</code> para <code>Structure</code>. <code>Structure</code>
// es una estructura que contiene un solo <code>i32</code>.

<h1>[derive(Debug)]</h1>

struct Structure(i32);

// Pon una <code>Structure</code> dentro de la estructura <code>Deep</code>. Hazlo también imprimible.


<h1>[derive(Debug)]</h1>

struct Deep(Structure);

fn main() {
    // Imprimir con <code>{:?}</code> es similar a usar <code>{}</code>.
    println!("{} meses en un año.", 12);
    println!("{1:?} {0:?} es el nombre del {actor:?}.",
             "Slater",
             "Christian",
             actor="actor");

<pre><code>// ¡La `Structure` es imprimible!
println!("¡Ahora {:?} se imprimirá!", Structure(3));

// El problema con `derive` es que no hay control sobre cómo
// se ven los resultados ¿Qué pasa si solo quiero mostrar un `7`?
println!("¡Ahora {:?} se imprimirá!", Deep(Structure(7)));
</code></pre>

}

captura de pantalla de una ejecución exitosa en vscode
salida impresa exitosa

Entonces, ¿qué está mal? ¿Hay algún error en evcxr?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber un problema con el kernel evcxr utilizado en Jupyter Notebook. El código funciona bien en VSCode y en la terminal, pero no en Jupyter Notebook. Podría ser un bug o un problema de compatibilidad con el kernel.

    Una posible solución es intentar usar un kernel diferente en Jupyter Notebook, como el kernel de Rust, que podría funcionar mejor con el código de Rust.

    Otra solución es usar una instrucción print en lugar de la macro println!, por ejemplo println!("Hola Mundo") en lugar de println!("Hola Mundo {}", variable) porque println! requiere una nueva línea y el “!” imprime en la salida estándar en lugar de devolver una cadena.

Comments are closed.