toolkit_rs/
lib.rs

1#[cfg(feature = "logger")]
2pub mod logger;
3
4#[cfg(feature = "panic_handle")]
5pub mod painc;
6
7pub mod time;
8pub use anyhow;
9pub use chrono;
10pub use serde;
11pub use time::*;
12
13pub type AppResult<T = ()> = std::result::Result<T, anyhow::Error>;
14
15use std::time::Duration;
16#[cfg(target_os = "linux")]
17use tokio::process::Command;
18
19// 程序退出
20pub fn after_app_exist(sec: u8) {
21    tokio::spawn(async move {
22        log::info!("程序退出,{} 秒后重启", sec);
23        tokio::time::sleep(Duration::from_secs(sec as u64)).await;
24        std::process::exit(1);
25    });
26}
27
28//重启系统
29pub fn after_reboot(sec: u8) {
30    #[cfg(target_os = "linux")]
31    {
32        tokio::spawn(async move {
33            log::info!("程序重启,{} 秒后重启", sec);
34            tokio::time::sleep(Duration::from_secs(sec as u64)).await;
35            let status = Command::new("reboot").status().await.unwrap();
36            if status.success() {
37                log::info!("程序重启成功");
38            } else {
39                log::error!("程序重启失败");
40            }
41        });
42    }
43    #[cfg(target_os = "windows")]
44    log::warn!("windows系统不支持自动重启:{}", sec)
45}