Есть ли лучший способ, чем использовать подпроцесс::Popen (ржавчина)?

#rust

Вопрос:

Я хочу иметь меню, в котором пользователь может вызывать функции и останавливать их по своему выбору. Я знаю, что один из способов сделать это-использовать subprocess::Popen и убивать процессы с их pid, но я чувствую, что есть лучший способ сделать это. Следует отметить , что функции зацикливаются бесконечно ( loop { /* stuff */ } ), если только каким-то образом не остановятся.

Изменить: Изменен пример, предыдущий был не очень близок к тому, что я делаю:

(следует отметить, что я не собираюсь ничего делать с результатом выполнения функций)

 fn main() {
    fn lots_of_requests() -> Result<(), reqwest::Error> {
    
   

    loop {
    let _response = client.post("https://www.httpbin.org/post")
    .body("stuff")
    .send()?;
    }

    Ok(())
} 
}
 

Комментарии:

1. вы ищете изящный выход из подпроцессов? Если да, являются ли они вашими собственными процессами?

2. Я бы предпочел, и да. Используя Popen метод, я бы открыл исполняемые файлы. Однако я бы предпочел использовать функции, определенные в исходном коде.

3. не могли бы вы опубликовать простой пример с кодом?

4. Вы можете сделать это, создав spawn поток для своей функции и попросив функцию проверить флаг и выйти из цикла, если флаг установлен.

5. Не могли бы вы привести мне пример?