diff --git a/Cargo.toml b/Cargo.toml index 498aefc0..9914b050 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -136,16 +136,20 @@ broken_intra_doc_links = "warn" # See also clippy.toml [workspace.lints.clippy] +all = { level = "warn", priority = -1 } + allow_attributes = "warn" as_ptr_cast_mut = "warn" await_holding_lock = "warn" bool_to_int_with_if = "warn" +branches_sharing_code = "warn" char_lit_as_u8 = "warn" checked_conversions = "warn" clear_with_drain = "warn" cloned_instead_of_copied = "warn" dbg_macro = "warn" debug_assert_with_mut_call = "warn" +default_union_representation = "warn" derive_partial_eq_without_eq = "warn" disallowed_macros = "warn" # See clippy.toml disallowed_methods = "warn" # See clippy.toml @@ -155,6 +159,7 @@ disallowed_types = "warn" # See clippy.toml doc_link_with_quotes = "warn" doc_markdown = "warn" empty_enum = "warn" +empty_line_after_outer_attr = "warn" empty_enum_variants_with_brackets = "warn" enum_glob_use = "warn" equatable_if_let = "warn" @@ -171,6 +176,7 @@ fn_params_excessive_bools = "warn" fn_to_numeric_cast_any = "warn" from_iter_instead_of_collect = "warn" get_unwrap = "warn" +if_let_mutex = "warn" implicit_clone = "warn" implied_bounds_in_impls = "warn" imprecise_flops = "warn" @@ -211,6 +217,7 @@ match_same_arms = "warn" match_wild_err_arm = "warn" match_wildcard_for_single_variants = "warn" mem_forget = "warn" +mismatched_target_os = "warn" mismatching_type_param_order = "warn" missing_assert_message = "warn" missing_enforced_import_renames = "warn" @@ -230,8 +237,9 @@ nonstandard_macro_braces = "warn" option_as_ref_cloned = "warn" option_option = "warn" path_buf_push_overwrite = "warn" -print_stderr = "warn" pathbuf_init_then_push = "warn" +print_stderr = "warn" +print_stdout = "warn" ptr_as_ptr = "warn" ptr_cast_constness = "warn" pub_underscore_fields = "warn" @@ -261,6 +269,7 @@ todo = "warn" too_long_first_doc_paragraph = "warn" trailing_empty_array = "warn" trait_duplication_in_bounds = "warn" +transmute_ptr_to_ptr = "warn" tuple_array_conversions = "warn" unchecked_duration_subtraction = "warn" undocumented_unsafe_blocks = "warn" @@ -268,8 +277,10 @@ unimplemented = "warn" uninhabited_references = "warn" uninlined_format_args = "warn" unnecessary_box_returns = "warn" +unnecessary_safety_comment = "warn" unnecessary_literal_bound = "warn" unnecessary_safety_doc = "warn" +unnecessary_self_imports = "warn" unnecessary_struct_initialization = "warn" unnecessary_wraps = "warn" unnested_or_patterns = "warn" @@ -278,6 +289,7 @@ unused_rounding = "warn" unused_self = "warn" unused_trait_names = "warn" use_self = "warn" +useless_let_if_seq = "warn" useless_transmute = "warn" verbose_file_reads = "warn" wildcard_dependencies = "warn" diff --git a/crates/egui/src/hit_test.rs b/crates/egui/src/hit_test.rs index 1361c1c4..d1122350 100644 --- a/crates/egui/src/hit_test.rs +++ b/crates/egui/src/hit_test.rs @@ -468,6 +468,8 @@ fn should_prioritize_hits_on_back(back: Rect, front: Rect) -> bool { #[cfg(test)] mod tests { + #![expect(clippy::print_stdout)] + use emath::{Rect, pos2, vec2}; use crate::{Id, Sense}; diff --git a/crates/egui/src/viewport.rs b/crates/egui/src/viewport.rs index bf09fc84..8818a171 100644 --- a/crates/egui/src/viewport.rs +++ b/crates/egui/src/viewport.rs @@ -648,6 +648,8 @@ impl ViewportBuilder { /// returning a list of commands and a bool indicating if the window needs to be recreated. #[must_use] pub fn patch(&mut self, new_vp_builder: Self) -> (Vec, bool) { + #![expect(clippy::useless_let_if_seq)] // False positive + let Self { title: new_title, app_id: new_app_id, diff --git a/crates/egui/src/widget_text.rs b/crates/egui/src/widget_text.rs index 75bf36d8..bf7cbde3 100644 --- a/crates/egui/src/widget_text.rs +++ b/crates/egui/src/widget_text.rs @@ -422,10 +422,12 @@ impl RichText { font_id }; - let mut background_color = background_color; - if code { - background_color = style.visuals.code_bg_color; - } + let background_color = if code { + style.visuals.code_bg_color + } else { + background_color + }; + let underline = if underline { crate::Stroke::new(1.0, line_color) } else { diff --git a/crates/egui/src/widgets/image.rs b/crates/egui/src/widgets/image.rs index 08b37784..167920ad 100644 --- a/crates/egui/src/widgets/image.rs +++ b/crates/egui/src/widgets/image.rs @@ -938,11 +938,9 @@ fn animated_image_frame_index(ctx: &Context, uri: &str) -> usize { return index; } } - - 0 - } else { - 0 } + + 0 } /// Checks if uri is a gif file diff --git a/crates/egui/src/widgets/text_edit/builder.rs b/crates/egui/src/widgets/text_edit/builder.rs index bcd65c7b..4df736e3 100644 --- a/crates/egui/src/widgets/text_edit/builder.rs +++ b/crates/egui/src/widgets/text_edit/builder.rs @@ -929,12 +929,10 @@ fn events( event if cursor_range.on_event(os, event, galley, id) => None, Event::Copy => { - if cursor_range.is_empty() { - None - } else { + if !cursor_range.is_empty() { copy_if_not_password(ui, cursor_range.slice_str(text.as_str()).to_owned()); - None } + None } Event::Cut => { if cursor_range.is_empty() { diff --git a/crates/egui_kittest/src/snapshot.rs b/crates/egui_kittest/src/snapshot.rs index 8a457ec5..c27a1488 100644 --- a/crates/egui_kittest/src/snapshot.rs +++ b/crates/egui_kittest/src/snapshot.rs @@ -321,6 +321,8 @@ fn try_image_snapshot_options_impl( name: String, options: &SnapshotOptions, ) -> SnapshotResult { + #![expect(clippy::print_stdout)] + let SnapshotOptions { threshold, output_path, diff --git a/crates/emath/src/rect.rs b/crates/emath/src/rect.rs index 089e8167..b9e45c52 100644 --- a/crates/emath/src/rect.rs +++ b/crates/emath/src/rect.rs @@ -830,6 +830,7 @@ mod tests { ); } + #[expect(clippy::print_stdout)] #[test] fn test_ray_intersection() { let rect = Rect::from_min_max(pos2(1.0, 1.0), pos2(3.0, 3.0)); diff --git a/crates/epaint/src/shapes/bezier_shape.rs b/crates/epaint/src/shapes/bezier_shape.rs index 5823c379..20f7a4e1 100644 --- a/crates/epaint/src/shapes/bezier_shape.rs +++ b/crates/epaint/src/shapes/bezier_shape.rs @@ -613,6 +613,8 @@ struct FlatteningParameters { impl FlatteningParameters { // https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html pub fn from_curve(curve: &QuadraticBezierShape, tolerance: f32) -> Self { + #![expect(clippy::useless_let_if_seq)] + // Map the quadratic bézier segment to y = x^2 parabola. let from = curve.points[0]; let ctrl = curve.points[1]; diff --git a/crates/epaint/src/text/fonts.rs b/crates/epaint/src/text/fonts.rs index e59f9bc2..f0d1c9c3 100644 --- a/crates/epaint/src/text/fonts.rs +++ b/crates/epaint/src/text/fonts.rs @@ -1165,6 +1165,7 @@ mod tests { ] } + #[expect(clippy::print_stdout)] #[test] fn test_split_paragraphs() { for pixels_per_point in [1.0, 2.0_f32.sqrt(), 2.0] { diff --git a/crates/epaint/src/text/text_layout.rs b/crates/epaint/src/text/text_layout.rs index 8d4a90fb..fd71506e 100644 --- a/crates/epaint/src/text/text_layout.rs +++ b/crates/epaint/src/text/text_layout.rs @@ -554,6 +554,8 @@ fn halign_and_justify_row( wrap_width: f32, justify: bool, ) { + #![expect(clippy::useless_let_if_seq)] // False positive + let row = Arc::make_mut(&mut placed_row.row); if row.glyphs.is_empty() { diff --git a/examples/custom_keypad/src/keypad.rs b/examples/custom_keypad/src/keypad.rs index ddc67546..df8d1f48 100644 --- a/examples/custom_keypad/src/keypad.rs +++ b/examples/custom_keypad/src/keypad.rs @@ -179,8 +179,8 @@ impl Keypad { ) }); - let mut is_first_show = false; - if ctx.wants_keyboard_input() && state.focus != focus { + let is_first_show = ctx.wants_keyboard_input() && state.focus != focus; + if is_first_show { let y = ctx.style().spacing.interact_size.y * 1.25; state.open = true; state.start_pos = ctx.input(|i| { @@ -189,7 +189,6 @@ impl Keypad { .map_or(pos2(100.0, 100.0), |p| p + vec2(0.0, y)) }); state.focus = focus; - is_first_show = true; } if state.close_on_next_frame { diff --git a/examples/external_eventloop_async/src/main.rs b/examples/external_eventloop_async/src/main.rs index bbb52084..f77dea94 100644 --- a/examples/external_eventloop_async/src/main.rs +++ b/examples/external_eventloop_async/src/main.rs @@ -11,5 +11,6 @@ fn main() -> std::io::Result<()> { // Do not check `app` on unsupported platforms when check "--all-features" is used in CI. #[cfg(not(target_os = "linux"))] fn main() { + #![expect(clippy::print_stdout)] println!("This example only supports Linux."); }