traduccion the requisitos lab games game forest descargar system rust

requisitos - the forest system requirements lab



¿Cómo salgo de un programa Rust desde afuera de la función principal? (2)

Rust 1.0 estable

std::process::exit() hace exactamente eso: finaliza el programa con el código de salida especificado:

use std::process; fn main() { for i in 0..10 { if i == 5 { process::exit(1); } println!("{}", i); } }

Esta función hace que el programa finalice de inmediato, sin desenrollar ni ejecutar los destructores, por lo que debe usarse con moderación.

Antes del óxido 1.0

Puedes usar C API directamente:

#![feature(libc)] extern crate libc; fn main() { for i in 0..10 { if i == 5 { unsafe { libc::exit(1); } } println!("{}", i); } }

Las funciones de C que llaman no pueden ser verificadas por el compilador Rust, por lo que esto requiere el bloqueo unsafe . Los recursos utilizados por el programa no serán liberados adecuadamente. Esto puede causar problemas tales como colgar enchufes.

Según tengo entendido, la forma correcta de salir del programa es terminar todos los subprocesos de alguna manera, luego el proceso saldrá automáticamente. Puede afectar el código de salida usando la función std::os::set_exit_status , pero no sé cómo terminar el hilo actual con gracia.

Estoy en el proceso de escribir un clon de bash en Rust. Necesito que mi programa salga cuando el usuario escriba exit . En las iteraciones anteriores de mi programa, antes de agregar funciones más complicadas, usaba return para salir del bucle que estaba solicitando al usuario la entrada. Esta lógica está ahora en una función, debido a la forma en que estoy implementando funciones de shell integradas, de modo que cuando return , simplemente salta de la función al bucle de control, en lugar de cortocircuitar el bucle de control y finalizar el programa.

Me doy cuenta de que probablemente podría devolver un booleano cuando el usuario escribe exit y salir del bucle, pero me gustaría al menos saber si Rust tiene una forma de terminar los programas antes, similar a System.exit() Java, ya que es útil Para ciertos tipos de programas.


panic!("Oh no something bad has happened!")

Ejemplo:

if a * g < 0f32 { panic!("The arithmetric-geometric mean is undefined for numbers less than zero!"); }

En la documentación anterior, verá que esto falla ("Oh, aquí no ha pasado nada malo").

Por alguna razón, esta macro se cambió de error a pánico. El pánico es la manera de fallar, si es necesario.

[editar] Lo siento. Parece que deberías estar probando la entrada para la cadena "exit", que dependería de cómo estás tomando la entrada (por línea o por argumentos). Luego, puede hacer que el programa salga del bucle a condición de que se detecte la salida.

Ejemplo:

loop { if exit_found { break } else { // your thing, which also looks for exit_found } }