make clippy happier
cargo devel CI / cargo CI (push) Failing after 1m8s Details

This commit is contained in:
Christoph J. Scherr 2024-02-28 16:54:34 +01:00
parent af2974d843
commit faa4023f95
Signed by: cscherrNT
GPG Key ID: 8E2B45BC51A27EA7
7 changed files with 59 additions and 67 deletions

View File

@ -34,17 +34,17 @@ where
T: std::fmt::Debug, T: std::fmt::Debug,
{ {
if total < T::from(KIBI).unwrap() { if total < T::from(KIBI).unwrap() {
return format!("{total} B"); format!("{total} B")
} else if T::from(KIBI).unwrap() <= total && total < T::from(MEBI).unwrap() { } else if T::from(KIBI).unwrap() <= total && total < T::from(MEBI).unwrap() {
return format!("{:.2} K", total.to_f64().unwrap() / KIBI as f64); format!("{:.2} K", total.to_f64().unwrap() / KIBI as f64)
} else if T::from(MEBI).unwrap() <= total && total < T::from(GIBI).unwrap() { } else if T::from(MEBI).unwrap() <= total && total < T::from(GIBI).unwrap() {
return format!("{:.2} M", total.to_f64().unwrap() / MEBI as f64); format!("{:.2} M", total.to_f64().unwrap() / MEBI as f64)
} else if T::from(GIBI).unwrap() <= total && total < T::from(TEBI).unwrap() { } else if T::from(GIBI).unwrap() <= total && total < T::from(TEBI).unwrap() {
return format!("{:.2} G", total.to_f64().unwrap() / GIBI as f64); format!("{:.2} G", total.to_f64().unwrap() / GIBI as f64)
} else if T::from(TEBI).unwrap() <= total && total < T::from(PEBI).unwrap() { } else if T::from(TEBI).unwrap() <= total && total < T::from(PEBI).unwrap() {
return format!("{:.2} T", total.to_f64().unwrap() / TEBI as f64); format!("{:.2} T", total.to_f64().unwrap() / TEBI as f64)
} else if T::from(PEBI).unwrap() <= total && total < T::from(EXBI).unwrap() { } else if T::from(PEBI).unwrap() <= total && total < T::from(EXBI).unwrap() {
return format!("{:.2} P", total.to_f64().unwrap() / PEBI as f64); format!("{:.2} P", total.to_f64().unwrap() / PEBI as f64)
} }
// now we are starting to reach the sizes that are pretty unrealistic // now we are starting to reach the sizes that are pretty unrealistic
// (as of 2023 that is, hello future) // (as of 2023 that is, hello future)
@ -53,9 +53,9 @@ where
// to work with a fixed, larger sized datatype // to work with a fixed, larger sized datatype
else { else {
let total: u128 = total.to_u128().unwrap(); let total: u128 = total.to_u128().unwrap();
if EXBI <= total && total < ZEBI { if (EXBI..ZEBI).contains(&total) {
return format!("{:.2} E", total.to_f64().unwrap() / EXBI as f64); return format!("{:.2} E", total.to_f64().unwrap() / EXBI as f64);
} else if ZEBI <= total && total < YOBI { } else if (ZEBI..YOBI).contains(&total) {
return format!("{:.2} Z", total.to_f64().unwrap() / ZEBI as f64); return format!("{:.2} Z", total.to_f64().unwrap() / ZEBI as f64);
} else if YOBI <= total { } else if YOBI <= total {
return format!("{:.2} Y", total.to_f64().unwrap() / YOBI as f64); return format!("{:.2} Y", total.to_f64().unwrap() / YOBI as f64);

View File

@ -2,6 +2,6 @@ use libpt_bintols::*;
#[test] #[test]
fn mkdmp() { fn mkdmp() {
let v = vec![true, true, false]; let v = [true, true, false];
investigate_memory_layout!(bool, v); investigate_memory_layout!(bool, v);
} }

View File

@ -16,7 +16,6 @@
use std::{ use std::{
fmt, fmt,
ops::Deref,
path::PathBuf, path::PathBuf,
sync::atomic::{AtomicBool, Ordering}, sync::atomic::{AtomicBool, Ordering},
}; };
@ -25,17 +24,8 @@ pub mod error;
use error::*; use error::*;
pub use tracing::{debug, error, info, trace, warn, Level}; pub use tracing::{debug, error, info, trace, warn, Level};
use tracing_appender::{ use tracing_appender::{self, non_blocking::NonBlocking};
self, use tracing_subscriber::fmt::{format::FmtSpan, time};
non_blocking::{NonBlocking, WorkerGuard},
};
use tracing_subscriber::{
fmt::{
format::FmtSpan,
time::{self, FormatTime},
},
prelude::*,
};
use anyhow::{bail, Result}; use anyhow::{bail, Result};
/// The log level used when none is specified /// The log level used when none is specified
@ -43,7 +33,7 @@ pub const DEFAULT_LOG_LEVEL: Level = Level::INFO;
/// The path where logs are stored when no path is given. /// The path where logs are stored when no path is given.
/// ///
/// Currently, this is `/dev/null`, meaning they will be written to the void = discarded. /// Currently, this is `/dev/null`, meaning they will be written to the void = discarded.
pub const DEFAULT_LOG_DIR: &'static str = "/dev/null"; pub const DEFAULT_LOG_DIR: &str = "/dev/null";
static INITIALIZED: AtomicBool = AtomicBool::new(false); static INITIALIZED: AtomicBool = AtomicBool::new(false);
@ -59,8 +49,7 @@ impl Logger {
/// ///
/// Creates a new uninitialized [`Logger`] object. /// Creates a new uninitialized [`Logger`] object.
pub fn new() -> Self { pub fn new() -> Self {
let l = Logger {}; Logger {}
l
} }
/// ## initializes the logger /// ## initializes the logger
/// ///
@ -132,7 +121,7 @@ impl Logger {
// only init if no init has been performed yet // only init if no init has been performed yet
if INITIALIZED.load(Ordering::Relaxed) { if INITIALIZED.load(Ordering::Relaxed) {
warn!("trying to reinitialize the logger, ignoring"); warn!("trying to reinitialize the logger, ignoring");
bail!(Error::Usage(format!("logging is already initialized"))); bail!(Error::Usage("logging is already initialized".to_string()));
} }
let subscriber = tracing_subscriber::fmt::Subscriber::builder() let subscriber = tracing_subscriber::fmt::Subscriber::builder()
.with_level(display_level) .with_level(display_level)
@ -256,6 +245,12 @@ impl Logger {
} }
} }
impl Default for Logger {
fn default() -> Self {
Self::new()
}
}
impl fmt::Debug for Logger { impl fmt::Debug for Logger {
/// ## DEBUG representation for [`Logger`] /// ## DEBUG representation for [`Logger`]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
@ -269,5 +264,5 @@ impl fmt::Debug for Logger {
fn new_file_appender(log_dir: PathBuf) -> NonBlocking { fn new_file_appender(log_dir: PathBuf) -> NonBlocking {
let file_appender = tracing_appender::rolling::daily(log_dir.clone(), "log"); let file_appender = tracing_appender::rolling::daily(log_dir.clone(), "log");
return tracing_appender::non_blocking(file_appender).0; tracing_appender::non_blocking(file_appender).0
} }

View File

@ -6,7 +6,7 @@
//! The networking module contains various tools related to connections. For example, it contains a //! The networking module contains various tools related to connections. For example, it contains a
//! tool that has the purpose to check if your connection is consistently available. //! tool that has the purpose to check if your connection is consistently available.
//// ATTRIBUTES //////////////////////////////////////////////////////////////////////////////////// // ATTRIBUTES ////////////////////////////////////////////////////////////////////////////////////
// we want docs // we want docs
#![warn(missing_docs)] #![warn(missing_docs)]
#![warn(rustdoc::missing_crate_level_docs)] #![warn(rustdoc::missing_crate_level_docs)]
@ -17,24 +17,24 @@
// enable clippy's extra lints, the pedantic version // enable clippy's extra lints, the pedantic version
#![warn(clippy::pedantic)] #![warn(clippy::pedantic)]
//// IMPORTS /////////////////////////////////////////////////////////////////////////////////////// // IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
/// monitor your connection /// monitor your connection
pub mod monitoring; pub mod monitoring;
//// CONSTANTS ///////////////////////////////////////////////////////////////////////////////////// // CONSTANTS /////////////////////////////////////////////////////////////////////////////////////
/// how long to wait for a remove server to respond in ms /// how long to wait for a remove server to respond in ms
pub const DEFAULT_REQUEST_TIMEOUT: u64 = 2000; pub const DEFAULT_REQUEST_TIMEOUT: u64 = 2000;
//// STATICS /////////////////////////////////////////////////////////////////////////////////////// // STATICS ///////////////////////////////////////////////////////////////////////////////////////
//// MACROS //////////////////////////////////////////////////////////////////////////////////////// // MACROS ////////////////////////////////////////////////////////////////////////////////////////
//// ENUMS ///////////////////////////////////////////////////////////////////////////////////////// // ENUMS /////////////////////////////////////////////////////////////////////////////////////////
//// STRUCTS /////////////////////////////////////////////////////////////////////////////////////// // STRUCTS ///////////////////////////////////////////////////////////////////////////////////////
//// IMPLEMENTATION //////////////////////////////////////////////////////////////////////////////// // IMPLEMENTATION ////////////////////////////////////////////////////////////////////////////////
//// PUBLIC FUNCTIONS ////////////////////////////////////////////////////////////////////////////// // PUBLIC FUNCTIONS //////////////////////////////////////////////////////////////////////////////
//// PRIVATE FUNCTIONS ///////////////////////////////////////////////////////////////////////////// // PRIVATE FUNCTIONS /////////////////////////////////////////////////////////////////////////////

View File

@ -2,7 +2,7 @@
//! //!
//! This module offers functions to monitor your network. //! This module offers functions to monitor your network.
//// ATTRIBUTES //////////////////////////////////////////////////////////////////////////////////// // ATTRIBUTES ////////////////////////////////////////////////////////////////////////////////////
// we want docs // we want docs
#![warn(missing_docs)] #![warn(missing_docs)]
#![warn(rustdoc::missing_crate_level_docs)] #![warn(rustdoc::missing_crate_level_docs)]
@ -13,21 +13,21 @@
// enable clippy's extra lints, the pedantic version // enable clippy's extra lints, the pedantic version
#![warn(clippy::pedantic)] #![warn(clippy::pedantic)]
//// IMPORTS /////////////////////////////////////////////////////////////////////////////////////// // IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
pub mod uptime; pub mod uptime;
//// CONSTANTS ///////////////////////////////////////////////////////////////////////////////////// // CONSTANTS /////////////////////////////////////////////////////////////////////////////////////
//// STATICS /////////////////////////////////////////////////////////////////////////////////////// // STATICS ///////////////////////////////////////////////////////////////////////////////////////
//// MACROS //////////////////////////////////////////////////////////////////////////////////////// // MACROS ////////////////////////////////////////////////////////////////////////////////////////
//// ENUMS ///////////////////////////////////////////////////////////////////////////////////////// // ENUMS /////////////////////////////////////////////////////////////////////////////////////////
//// STRUCTS /////////////////////////////////////////////////////////////////////////////////////// // STRUCTS ///////////////////////////////////////////////////////////////////////////////////////
//// IMPLEMENTATION //////////////////////////////////////////////////////////////////////////////// // IMPLEMENTATION ////////////////////////////////////////////////////////////////////////////////
//// PUBLIC FUNCTIONS ////////////////////////////////////////////////////////////////////////////// // PUBLIC FUNCTIONS //////////////////////////////////////////////////////////////////////////////
//// PRIVATE FUNCTIONS ///////////////////////////////////////////////////////////////////////////// // PRIVATE FUNCTIONS /////////////////////////////////////////////////////////////////////////////

View File

@ -18,8 +18,8 @@
use std::{fmt, time::Duration}; use std::{fmt, time::Duration};
//// IMPORTS /////////////////////////////////////////////////////////////////////////////////////// // IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
use libpt_log::*; use libpt_log::{debug, error, info, trace, warn};
use reqwest; use reqwest;
@ -31,25 +31,24 @@ use serde_json;
use libpt_core::divider; use libpt_core::divider;
//// TYPES ///////////////////////////////////////////////////////////////////////////////////////// // TYPES /////////////////////////////////////////////////////////////////////////////////////////
//// CONSTANTS ///////////////////////////////////////////////////////////////////////////////////// // CONSTANTS /////////////////////////////////////////////////////////////////////////////////////
/// urls used for checking by default /// urls used for checking by default
pub const DEFAULT_CHECK_URLS: &'static [&'static str] = pub const DEFAULT_CHECK_URLS: &[&str] = &["https://www.cscherr.de", "https://www.cloudflare.com"];
&["https://www.cscherr.de", "https://www.cloudflare.com"];
//// STATICS /////////////////////////////////////////////////////////////////////////////////////// // STATICS ///////////////////////////////////////////////////////////////////////////////////////
//// MACROS //////////////////////////////////////////////////////////////////////////////////////// // MACROS ////////////////////////////////////////////////////////////////////////////////////////
//// ENUMS ///////////////////////////////////////////////////////////////////////////////////////// // ENUMS /////////////////////////////////////////////////////////////////////////////////////////
//// STRUCTS /////////////////////////////////////////////////////////////////////////////////////// // STRUCTS ///////////////////////////////////////////////////////////////////////////////////////
/// ## Describes an uptime status /// ## Describes an uptime status
/// ///
/// [`UptimeStatus`] describes the result of an uptime check. /// [`UptimeStatus`] describes the result of an uptime check.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub struct UptimeStatus { pub struct Status {
/// true if the [`UptimeStatus`] is considered successful /// true if the [`UptimeStatus`] is considered successful
pub success: bool, pub success: bool,
/// the percentage of reachable urls out of the total urls /// the percentage of reachable urls out of the total urls
@ -65,13 +64,13 @@ pub struct UptimeStatus {
pub timeout: u64, pub timeout: u64,
} }
//// IMPLEMENTATION //////////////////////////////////////////////////////////////////////////////// // IMPLEMENTATION ////////////////////////////////////////////////////////////////////////////////
/// Main implementation /// Main implementation
impl UptimeStatus { impl Status {
/// ## create a new `UptimeStatus` and perform it's check /// ## create a new `UptimeStatus` and perform it's check
pub fn new(success_ratio_target: u8, urls: Vec<String>, timeout: u64) -> Self { pub fn new(success_ratio_target: u8, urls: Vec<String>, timeout: u64) -> Self {
assert!(success_ratio_target <= 100); assert!(success_ratio_target <= 100);
let mut status = UptimeStatus { let mut status = Status {
success: false, success: false,
success_ratio: 0, success_ratio: 0,
success_ratio_target, success_ratio_target,
@ -139,7 +138,7 @@ impl UptimeStatus {
} }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
impl fmt::Debug for UptimeStatus { impl fmt::Debug for Status {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut urls: Vec<&str> = Vec::new(); let mut urls: Vec<&str> = Vec::new();
for url in &self.urls { for url in &self.urls {
@ -150,7 +149,7 @@ impl fmt::Debug for UptimeStatus {
} }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
impl fmt::Display for UptimeStatus { impl fmt::Display for Status {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut urls: Vec<&str> = Vec::new(); let mut urls: Vec<&str> = Vec::new();
for url in &self.urls { for url in &self.urls {
@ -182,7 +181,7 @@ pub fn continuous_uptime_monitor(
let interval = std::time::Duration::from_millis(interval); let interval = std::time::Duration::from_millis(interval);
let mut last_downtime: Option<SystemTime> = None; let mut last_downtime: Option<SystemTime> = None;
let mut last_uptime: Option<SystemTime> = None; let mut last_uptime: Option<SystemTime> = None;
let mut status = UptimeStatus::new(success_ratio_target, urls, timeout); let mut status = Status::new(success_ratio_target, urls, timeout);
// we assume that the last status was up, so the binary shows the first status if its a // we assume that the last status was up, so the binary shows the first status if its a
// failure. // failure.
let mut last_was_up: bool = true; let mut last_was_up: bool = true;
@ -224,13 +223,13 @@ pub fn continuous_uptime_monitor(
} }
} }
//// PRIVATE FUNCTIONS ///////////////////////////////////////////////////////////////////////////// // PRIVATE FUNCTIONS /////////////////////////////////////////////////////////////////////////////
/// Displays the current status for the [continuous uptime monitor](continuous_uptime_monitor) /// Displays the current status for the [continuous uptime monitor](continuous_uptime_monitor)
fn display_uptime_status( fn display_uptime_status(
msg: &str, msg: &str,
last_uptime: Option<SystemTime>, last_uptime: Option<SystemTime>,
last_downtime: Option<SystemTime>, last_downtime: Option<SystemTime>,
status: &UptimeStatus, status: &Status,
) { ) {
// I know it's weird that this has two spaces too much, but somehow just the tabs is missing // I know it's weird that this has two spaces too much, but somehow just the tabs is missing
// two spaces. // two spaces.

View File

@ -8,8 +8,6 @@
#[cfg(feature = "bintols")] #[cfg(feature = "bintols")]
pub use libpt_bintols as bintols; pub use libpt_bintols as bintols;
#[cfg(feature = "ccc")]
pub use libpt_ccc as ccc;
#[cfg(feature = "core")] #[cfg(feature = "core")]
pub use libpt_core as core; pub use libpt_core as core;
#[cfg(feature = "log")] #[cfg(feature = "log")]