diff --git a/Cargo.toml b/Cargo.toml index af7063a2..b57681df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,3 +49,18 @@ tokio-stream = "0.1" tokio-util = { version = "0.7", features = ["io"], default-features = false } criterion = { package = "codspeed-criterion-compat", version = "4" } axum = "0.8" + +[workspace.lints.clippy] +correctness = "deny" +all = "warn" +complexity = "warn" +suspicious = "warn" +perf = "warn" + +[workspace.lints.rust] +rust_2018_idioms = "warn" +rust_2024_compatibility = "warn" +future_incompatible = "warn" +nonstandard_style = "warn" +missing_docs = "warn" +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] } diff --git a/crates/engineioxide-core/Cargo.toml b/crates/engineioxide-core/Cargo.toml index e616f076..485e57e3 100644 --- a/crates/engineioxide-core/Cargo.toml +++ b/crates/engineioxide-core/Cargo.toml @@ -17,3 +17,6 @@ rand = "0.10" base64 = "0.22" serde.workspace = true bytes.workspace = true + +[lints] +workspace = true diff --git a/crates/engineioxide-core/src/lib.rs b/crates/engineioxide-core/src/lib.rs index 2d3c66cb..3bc52e1c 100644 --- a/crates/engineioxide-core/src/lib.rs +++ b/crates/engineioxide-core/src/lib.rs @@ -1,32 +1,3 @@ -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - future_incompatible, - nonstandard_style, - missing_docs -)] #![doc = include_str!("../README.md")] mod sid; diff --git a/crates/engineioxide/Cargo.toml b/crates/engineioxide/Cargo.toml index e65cf6ce..ccff93bf 100644 --- a/crates/engineioxide/Cargo.toml +++ b/crates/engineioxide/Cargo.toml @@ -70,3 +70,6 @@ harness = false name = "packet_decode" path = "benches/packet_decode.rs" harness = false + +[lints] +workspace = true diff --git a/crates/engineioxide/src/lib.rs b/crates/engineioxide/src/lib.rs index cff26f28..b051075a 100644 --- a/crates/engineioxide/src/lib.rs +++ b/crates/engineioxide/src/lib.rs @@ -1,34 +1,4 @@ #![cfg_attr(docsrs, feature(doc_cfg))] -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - rust_2024_compatibility, - future_incompatible, - nonstandard_style, - missing_docs -)] #![doc = include_str!("../README.md")] pub use engineioxide_core::Str; diff --git a/crates/parser-common/Cargo.toml b/crates/parser-common/Cargo.toml index 6b615378..5d16ec54 100644 --- a/crates/parser-common/Cargo.toml +++ b/crates/parser-common/Cargo.toml @@ -42,3 +42,6 @@ harness = false name = "value_encode" path = "benches/value_encode.rs" harness = false + +[lints] +workspace = true diff --git a/crates/parser-common/src/lib.rs b/crates/parser-common/src/lib.rs index 80213f23..ec17e3d4 100644 --- a/crates/parser-common/src/lib.rs +++ b/crates/parser-common/src/lib.rs @@ -1,34 +1,3 @@ -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - rust_2024_compatibility, - future_incompatible, - nonstandard_style, - missing_docs -)] - //! The common parser sub-crate for the socketioxide crate. //! //! This is the default parser implementation. diff --git a/crates/parser-msgpack/Cargo.toml b/crates/parser-msgpack/Cargo.toml index 12fe53fe..b4f3f57f 100644 --- a/crates/parser-msgpack/Cargo.toml +++ b/crates/parser-msgpack/Cargo.toml @@ -42,3 +42,6 @@ harness = false name = "value_encode" path = "benches/value_encode.rs" harness = false + +[lints] +workspace = true diff --git a/crates/parser-msgpack/src/lib.rs b/crates/parser-msgpack/src/lib.rs index cfb5c0e2..e027e2ba 100644 --- a/crates/parser-msgpack/src/lib.rs +++ b/crates/parser-msgpack/src/lib.rs @@ -1,33 +1,3 @@ -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - future_incompatible, - nonstandard_style, - missing_docs -)] - //! The msgpack parser sub-crate for the socketioxide crate. //! //! This is a custom parser implementation that can be enable with the `msgpack` feature flag in socketioxide. diff --git a/crates/socketioxide-core/Cargo.toml b/crates/socketioxide-core/Cargo.toml index e2896deb..b64b597d 100644 --- a/crates/socketioxide-core/Cargo.toml +++ b/crates/socketioxide-core/Cargo.toml @@ -30,5 +30,5 @@ arbitrary = { version = "1.4.2", features = ["derive"] } serde_json.workspace = true rmp-serde.workspace = true -[lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] } +[lints] +workspace = true diff --git a/crates/socketioxide-core/src/adapter/mod.rs b/crates/socketioxide-core/src/adapter/mod.rs index 7961cf50..4300adca 100644 --- a/crates/socketioxide-core/src/adapter/mod.rs +++ b/crates/socketioxide-core/src/adapter/mod.rs @@ -588,8 +588,8 @@ impl CoreLocalAdapter { let mut except = get_except_sids(&opts.except, rooms); // In case of broadcast flag + if the sender is set, // we should not broadcast to it. - if is_broadcast && opts.sid.is_some() { - except.insert(opts.sid.unwrap()); + if is_broadcast && let Some(sid) = opts.sid { + except.insert(sid); } if !opts.rooms.is_empty() { diff --git a/crates/socketioxide-core/src/lib.rs b/crates/socketioxide-core/src/lib.rs index 13d0de78..3ed532e3 100644 --- a/crates/socketioxide-core/src/lib.rs +++ b/crates/socketioxide-core/src/lib.rs @@ -1,34 +1,3 @@ -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - rust_2024_compatibility, - future_incompatible, - nonstandard_style, - missing_docs -)] - //! This crate is the core of the socketioxide crate. //! It contains basic types and interfaces for the socketioxide crate and the parser sub-crates. diff --git a/crates/socketioxide-mongodb/Cargo.toml b/crates/socketioxide-mongodb/Cargo.toml index f21cd972..3e76d3f6 100644 --- a/crates/socketioxide-mongodb/Cargo.toml +++ b/crates/socketioxide-mongodb/Cargo.toml @@ -60,3 +60,6 @@ bytes.workspace = true [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/crates/socketioxide-mongodb/src/lib.rs b/crates/socketioxide-mongodb/src/lib.rs index ef4dd9fe..64da6322 100644 --- a/crates/socketioxide-mongodb/src/lib.rs +++ b/crates/socketioxide-mongodb/src/lib.rs @@ -1,33 +1,4 @@ #![cfg_attr(docsrs, feature(doc_auto_cfg))] -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - future_incompatible, - nonstandard_style, - missing_docs -)] //! # A mongodb adapter implementation for the socketioxide crate. //! The adapter is used to communicate with other nodes of the same application. //! This allows to broadcast messages to sockets connected on other servers, diff --git a/crates/socketioxide-redis/Cargo.toml b/crates/socketioxide-redis/Cargo.toml index e936f612..0f209a55 100644 --- a/crates/socketioxide-redis/Cargo.toml +++ b/crates/socketioxide-redis/Cargo.toml @@ -61,3 +61,6 @@ tracing-subscriber.workspace = true [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] + +[lints] +workspace = true diff --git a/crates/socketioxide-redis/src/lib.rs b/crates/socketioxide-redis/src/lib.rs index 56bd9cd4..eef53cfd 100644 --- a/crates/socketioxide-redis/src/lib.rs +++ b/crates/socketioxide-redis/src/lib.rs @@ -1,34 +1,4 @@ #![cfg_attr(docsrs, feature(doc_cfg))] -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - rust_2024_compatibility, - future_incompatible, - nonstandard_style, - missing_docs -)] //! # A redis/valkey adapter implementation for the socketioxide crate. //! The adapter is used to communicate with other nodes of the same application. diff --git a/crates/socketioxide/Cargo.toml b/crates/socketioxide/Cargo.toml index 79c33a38..c1f8aac4 100644 --- a/crates/socketioxide/Cargo.toml +++ b/crates/socketioxide/Cargo.toml @@ -75,3 +75,6 @@ rustdoc-args = ["--cfg", "docsrs"] name = "extensions" path = "benches/extensions.rs" harness = false + +[lints] +workspace = true diff --git a/crates/socketioxide/src/lib.rs b/crates/socketioxide/src/lib.rs index ff20d57e..d38367e1 100644 --- a/crates/socketioxide/src/lib.rs +++ b/crates/socketioxide/src/lib.rs @@ -5,36 +5,6 @@ #![doc( html_favicon_url = "https://raw.githubusercontent.com/Totodore/socketioxide/refs/heads/main/.github/logo_dark.ico" )] -#![warn( - clippy::all, - clippy::todo, - clippy::empty_enum, - clippy::mem_forget, - clippy::unused_self, - clippy::filter_map_next, - clippy::needless_continue, - clippy::needless_borrow, - clippy::match_wildcard_for_single_variants, - clippy::if_let_mutex, - clippy::await_holding_lock, - clippy::imprecise_flops, - clippy::suboptimal_flops, - clippy::lossy_float_literal, - clippy::rest_pat_in_fully_bound_structs, - clippy::fn_params_excessive_bools, - clippy::exit, - clippy::inefficient_to_string, - clippy::linkedlist, - clippy::macro_use_imports, - clippy::option_option, - clippy::verbose_file_reads, - clippy::unnested_or_patterns, - rust_2018_idioms, - rust_2024_compatibility, - future_incompatible, - nonstandard_style, - missing_docs -)] //! Socketioxide is a socket.io server implementation that works as a tower layer/service. //! It integrates nicely with the rest of the [`tower`](https://docs.rs/tower/latest/tower/)/[`tokio`]/[`hyper`](https://docs.rs/hyper/latest/hyper/) ecosystem. //! diff --git a/crates/socketioxide/src/operators.rs b/crates/socketioxide/src/operators.rs index 06151e13..efdde4a8 100644 --- a/crates/socketioxide/src/operators.rs +++ b/crates/socketioxide/src/operators.rs @@ -244,10 +244,9 @@ impl BroadcastOperators { .adapter .broadcast(packet?, self.opts) .await - .map_err(|e| { + .inspect_err(|_e| { #[cfg(feature = "tracing")] - tracing::debug!("broadcast error: {e}"); - e + tracing::debug!("broadcast error: {_e}"); })?; Ok(()) }