Ответ 1
Обновлено для Rust 1.1
В стабильной версии Rust есть функция std::process::exit()
, которая делает именно это: она завершает программу с указанным кодом выхода:
use std::process;
fn main() {
for i in 0..10 {
if i == 5 {
process::exit(1);
}
println!("{}", i);
}
}
Эта функция все же, тем не менее, заставляет программу немедленно завершать работу без разматывания и запуска деструкторов, поэтому ее следует использовать экономно.
Оригинальный ответ ниже.
Вы можете напрямую использовать API C:
#![feature(libc)]
extern crate libc;
fn main() {
for i in 0..10 {
if i == 5 {
unsafe { libc::exit(1); }
}
println!("{}", i);
}
}
Это небезопасно, потому что ресурсы, используемые программой, не освобождаются должным образом. Это может вызвать проблемы, например, висячие сокеты.
Насколько я понимаю, правильный способ выхода из программы состоит в том, чтобы каким-то образом прекратить все задачи, тогда процесс завершится автоматически. Вы можете повлиять на его код выхода с помощью std::os::set_exit_status
, но я не знаю, как закончить текущую задачу изящно. Может быть, кто-то другой даст ответ на это.