Можете ли вы сказать мне, как использовать таймер в Rust?

Можете ли вы сказать мне, как использовать таймер в Rust? Мне нужно, чтобы он закрылся через определенное время после входа в цикл, используйте разрыв.

Я этим пользовался, но надо не после старта, а после входа в цикл.

use std::time::{Duration, Instant};

fn main() {
    let seconds = Duration::from_secs(5);  

    let start = Instant::now();
    loop {
       

        if Instant::now() - start >= seconds { 
            return;  
        }
    }
}

Это помогает? docs.rs/timer/latest/timer/struct.Timer.html

kometen 20.02.2023 14:58
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
2
1
50
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте SystemTime::now().

Пример из документации SystemTime:

use std::time::{Duration, SystemTime};
use std::thread::sleep;

fn main() {
   let now = SystemTime::now();

   // we sleep for 2 seconds
   sleep(Duration::new(2, 0));
   match now.elapsed() {
       Ok(elapsed) => {
           // it prints '2'
           println!("{}", elapsed.as_secs());
       }
       Err(e) => {
           // an error occurred!
           println!("Error: {e:?}");
       }
   }
}

И ваш код может выглядеть так

use std::time::{Duration, SystemTime};

fn main() {
    let seconds = Duration::from_secs(5);

    let start = SystemTime::now();
    loop {
        // Делаем что-то.
        std::thread::sleep(Duration::new(2, 0));

        match start.elapsed() {
            Ok(elapsed) if elapsed > seconds => {
                return;
            }
            _ => (),
        }
    }
}

Решение хорошее, но мне нужно замкнуть цикл, а не весь код.

Wiktor Kazmerchuk 20.02.2023 16:33

@WiktorKazmerchuk, вы написали return в своем примере кода, и возврат из main закрывает программу. Чтобы закрыть цикл, вам нужно использовать break вместо этого.

denis.peplin 20.02.2023 16:43

Другие вопросы по теме