From 4c1b7fcd80384c77563f078762c6fe20cf0598a0 Mon Sep 17 00:00:00 2001 From: Adrian Duke Date: Tue, 13 Jan 2026 15:45:03 +0000 Subject: [PATCH] clippy: Deny and fix `index_slicing` --- Cargo.toml | 1 + crates/radicle-cli/src/commands/cob/args.rs | 1 + crates/radicle-cli/src/commands/id/args.rs | 1 + crates/radicle-cli/src/git/pretty_diff.rs | 6 +++--- crates/radicle-cli/src/terminal/highlight.rs | 8 +++++--- crates/radicle-cli/src/terminal/io.rs | 2 +- crates/radicle-cli/tests/commands.rs | 2 +- 7 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 29d41819..2ec9106c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,6 +81,7 @@ radicle-surf = "0.26.0" [workspace.lints] clippy.type_complexity = "allow" clippy.enum_variant_names = "allow" +clippy.indexing_slicing = "deny" clippy.fallible_impl_from = "deny" clippy.wildcard_enum_match_arm = "deny" clippy.unneeded_field_pattern = "deny" diff --git a/crates/radicle-cli/src/commands/cob/args.rs b/crates/radicle-cli/src/commands/cob/args.rs index a7c315b7..bd5f388b 100644 --- a/crates/radicle-cli/src/commands/cob/args.rs +++ b/crates/radicle-cli/src/commands/cob/args.rs @@ -210,6 +210,7 @@ where chunks.map(|chunk| { // Slice accesses will not panic, guaranteed by `chunks_exact(2)`. + #[allow(clippy::indexing_slicing)] Embed { name: chunk[0].to_string(), content: EmbedContent::from(T::from(chunk[1].clone())), diff --git a/crates/radicle-cli/src/commands/id/args.rs b/crates/radicle-cli/src/commands/id/args.rs index 05b802b7..c123b0ef 100644 --- a/crates/radicle-cli/src/commands/id/args.rs +++ b/crates/radicle-cli/src/commands/id/args.rs @@ -55,6 +55,7 @@ pub(super) fn parse_many_upserts( chunks.map(|chunk| { // Slice accesses will not panic, guaranteed by `chunks_exact(3)`. + #[allow(clippy::indexing_slicing)] Ok(PayloadUpsert { id: PayloadId::from_str(&chunk[0])?, key: chunk[1].to_owned(), diff --git a/crates/radicle-cli/src/git/pretty_diff.rs b/crates/radicle-cli/src/git/pretty_diff.rs index a5319cfa..dc306b93 100644 --- a/crates/radicle-cli/src/git/pretty_diff.rs +++ b/crates/radicle-cli/src/git/pretty_diff.rs @@ -537,14 +537,14 @@ impl ToPretty for Modification { match self { Modification::Deletion(diff::Deletion { line, line_no }) => { if let Some(lines) = &blobs.old.as_ref() { - lines[*line_no as usize - 1].clone() + lines.get(*line_no as usize - 1).unwrap().clone() } else { term::Line::new(String::from_utf8_lossy(line.as_bytes()).as_ref()) } } Modification::Addition(diff::Addition { line, line_no }) => { if let Some(lines) = &blobs.new.as_ref() { - lines[*line_no as usize - 1].clone() + lines.get(*line_no as usize - 1).unwrap().clone() } else { term::Line::new(String::from_utf8_lossy(line.as_bytes()).as_ref()) } @@ -554,7 +554,7 @@ impl ToPretty for Modification { } => { // Nb. we can check in the old or the new blob, we choose the new. if let Some(lines) = &blobs.new.as_ref() { - lines[*line_no_new as usize - 1].clone() + lines.get(*line_no_new as usize - 1).unwrap().clone() } else { term::Line::new(String::from_utf8_lossy(line.as_bytes()).as_ref()) } diff --git a/crates/radicle-cli/src/terminal/highlight.rs b/crates/radicle-cli/src/terminal/highlight.rs index 4e4045e7..b62f9420 100644 --- a/crates/radicle-cli/src/terminal/highlight.rs +++ b/crates/radicle-cli/src/terminal/highlight.rs @@ -145,9 +145,11 @@ impl Builder { } } ts::HighlightEvent::HighlightStart(h) => { - let name = HIGHLIGHTS[h.0]; - let style = - term::Style::default().fg(theme.highlight(name).unwrap_or_default()); + let color = HIGHLIGHTS + .get(h.0) + .and_then(|name| theme.highlight(name)) + .unwrap_or_default(); + let style = term::Style::default().fg(color); self.advance(); self.styles.push(style); diff --git a/crates/radicle-cli/src/terminal/io.rs b/crates/radicle-cli/src/terminal/io.rs index c3d47039..77c6cf2a 100644 --- a/crates/radicle-cli/src/terminal/io.rs +++ b/crates/radicle-cli/src/terminal/io.rs @@ -78,7 +78,7 @@ pub fn comment_select(issue: &Issue) -> anyhow::Result<(&CommentId, &Comment)> { (0..comments.len()).collect(), ) .with_render_config(*CONFIG) - .with_formatter(&|i| comments[i.index].1.body().to_owned()) + .with_formatter(&|i| comments.get(i.index).unwrap().1.body().to_owned()) .prompt()?; comments diff --git a/crates/radicle-cli/tests/commands.rs b/crates/radicle-cli/tests/commands.rs index ce8ca526..b76a7812 100644 --- a/crates/radicle-cli/tests/commands.rs +++ b/crates/radicle-cli/tests/commands.rs @@ -338,7 +338,7 @@ fn rad_config() { let mut environment = Environment::new(); let alias = Alias::new("alice"); let profile = environment.profile_with(profile::Config { - preferred_seeds: vec![RADICLE_NODE_BOOTSTRAP_IRIS.clone()[0].clone()], + preferred_seeds: vec![RADICLE_NODE_BOOTSTRAP_IRIS.clone().first().unwrap().clone()], ..profile::Config::new(alias) }); let working = tempfile::tempdir().unwrap();