web-dev-qa-db-fra.com

Comment puis-je mettre le fil actuel en veille?

Il y a tellement d'informations obsolètes, il est vraiment difficile de savoir comment dormir. Je voudrais quelque chose de similaire à ceci Java code:

Thread.sleep(4000);
30
Tiago

Réponse mise à jour

Il s'agit du code mis à jour pour la version Rust version actuelle:

use std::time::Duration;
use std::thread::sleep;

fn main() {
    sleep(Duration::from_millis(2));
}

URL de lecture de Rust: http://is.Gd/U7Oyip

Ancienne réponse antérieure à 1.0

Selon la demande d'extraction https://github.com/Rust-lang/Rust/pull/233 la fonctionnalité qui remplacera l'ancien std::old_io::timer::sleep est le nouveau std::thread::sleep.

Description de la demande d'extraction sur GitHub:

Cette fonction est le remplacement actuel de std :: old_io :: timer qui sera bientôt obsolète. Cette fonction est instable et possède sa propre porte caractéristique car elle n'a pas encore de RFC et elle n'existe pas depuis très longtemps.

Exemple de code:

#![feature(std_misc, thread_sleep)]

use std::time::Duration;
use std::thread::sleep;

fn main() {
    sleep(Duration::milliseconds(2));
}

Cela utilise sleep et Duration , qui sont actuellement derrière les portes de fonctionnalité de thread_sleep et std_misc, respectivement.

11
Tiago

Rouille 1.4+

Duration et sleep sont revenus et sont stables!

use std::time::Duration;
use std::thread;

fn main() {
    thread::sleep(Duration::from_millis(4000))
}

Vous pouvez également utiliser Duration::from_secs(4), ce qui pourrait être plus évident dans ce cas.

La solution ci-dessous pour 1.0 continuera de fonctionner si vous le préférez, en raison de la nature du versioning sémantique.

Rust 1.0+

La durée n'a pas été stabilisée à temps pour 1.0, il y a donc une nouvelle fonction en ville - thread::sleep_ms :

use std::thread;

fn main() {
    thread::sleep_ms(4000);
}
31
Shepmaster