diff --git a/proxmox-sys/Cargo.toml b/proxmox-sys/Cargo.toml index 4022228c..c5d2bd87 100644 --- a/proxmox-sys/Cargo.toml +++ b/proxmox-sys/Cargo.toml @@ -6,13 +6,13 @@ edition.workspace = true license.workspace = true repository.workspace = true description = "System tools (using nix)." +rust-version.workspace = true exclude.workspace = true [dependencies] anyhow.workspace = true base64.workspace = true -lazy_static.workspace = true libc.workspace = true log.workspace = true nix.workspace = true diff --git a/proxmox-sys/src/lib.rs b/proxmox-sys/src/lib.rs index a16b46e3..c75cd69f 100644 --- a/proxmox-sys/src/lib.rs +++ b/proxmox-sys/src/lib.rs @@ -2,6 +2,7 @@ use std::os::fd::{FromRawFd, OwnedFd}; use std::os::unix::ffi::OsStrExt; +use std::sync::LazyLock; pub mod boot_mode; pub mod command; @@ -20,21 +21,19 @@ pub mod systemd; /// Returns the hosts node name (UTS node name) pub fn nodename() -> &'static str { - lazy_static::lazy_static! { - static ref NODENAME: String = { - std::str::from_utf8( - nix::sys::utsname::uname() - .expect("failed to get nodename") - .nodename() - .as_bytes(), - ) - .expect("non utf-8 nodename not supported") - .split('.') - .next() - .unwrap() - .to_owned() - }; - } + static NODENAME: LazyLock = LazyLock::new(|| { + std::str::from_utf8( + nix::sys::utsname::uname() + .expect("failed to get nodename") + .nodename() + .as_bytes(), + ) + .expect("non utf-8 nodename not supported") + .split('.') + .next() + .unwrap() + .to_owned() + }); &NODENAME } diff --git a/proxmox-sys/src/linux/procfs/mod.rs b/proxmox-sys/src/linux/procfs/mod.rs index 6c436c74..0875fcf8 100644 --- a/proxmox-sys/src/linux/procfs/mod.rs +++ b/proxmox-sys/src/linux/procfs/mod.rs @@ -5,11 +5,10 @@ use std::fs::OpenOptions; use std::io::{BufRead, BufReader}; use std::net::{Ipv4Addr, Ipv6Addr}; use std::str::FromStr; -use std::sync::RwLock; +use std::sync::{LazyLock, RwLock}; use std::time::Instant; use anyhow::{bail, format_err, Error}; -use lazy_static::lazy_static; use nix::unistd::Pid; use serde::Serialize; @@ -27,9 +26,7 @@ pub fn sysconf(name: i32) -> i64 { unsafe { sysconf(name) } } -lazy_static! { - pub static ref CLOCK_TICKS: f64 = sysconf(libc::_SC_CLK_TCK) as f64; -} +pub static CLOCK_TICKS: LazyLock = LazyLock::new(|| sysconf(libc::_SC_CLK_TCK) as f64); /// Selected contents of the `/proc/PID/stat` file. pub struct PidStat { @@ -223,10 +220,8 @@ pub struct ProcFsStat { pub iowait_percent: f64, } -lazy_static! { - static ref PROC_LAST_STAT: RwLock<(ProcFsStat, Instant, bool)> = - RwLock::new((ProcFsStat::default(), Instant::now(), true)); -} +static PROC_LAST_STAT: LazyLock> = + LazyLock::new(|| RwLock::new((ProcFsStat::default(), Instant::now(), true))); /// reads `/proc/stat`. For now only total host CPU usage is handled as the /// other metrics are not really interesting