Clippy lints / Correctness
Clippy lint · Correctness · checked with Clippy 0.1.99
clippy::out_of_bounds_indexing: index is out of bounds
What it meansChecks for out of bounds array indexing with a constant index. It is in the correctness group and denied by default (the build fails).
What you see
error: index is out of bounds --> main.rs:5:1 | 5 | x[9]; | ^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/stable/index.html#out_of_bounds_indexing = note: `#[deny(clippy::out_of_bounds_indexing)]` on by default
Real output of Clippy 0.1.99 (Rust 1.99) on the example below. Names and line numbers in yours will differ.
Does it matter?
This will always panic at runtime.
Code that is almost certainly wrong. Denied by default: the build fails until you fix it or allow it.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
let x = [1, 2, 3, 4];
x[9];
&x[2..9];
Write this instead
// Index within bounds
x[0];
x[3];
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::out_of_bounds_indexing)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
out_of_bounds_indexing = "allow"One run
cargo clippy -- -A clippy::out-of-bounds-indexingThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Clippy's own documentation
What it does
Checks for out of bounds array indexing with a constant index.
Why is this bad?
This will always panic at runtime.
Example
let x = [1, 2, 3, 4];
x[9];
&x[2..9];
Use instead:
// Index within bounds
x[0];
x[3];
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- nonsensical_open_optionsChecks for duplicate open options as well as combinations that make no sense
- not_unsafe_ptr_arg_derefthis public function might dereference a raw pointer but is not marked `unsafe`
- option_env_unwrapthis will panic at run-time if the environment variable doesn't exist at compile-time
- panicking_overflow_checksDetects C-style underflow/overflow checks
- panicking_unwrapChecks for calls of unwrap[_err]() that will always fail
- possible_missing_commapossibly missing a comma here
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::nonsensical_open_optionsChecks for duplicate open options as well as combinations that make no senseRead it next →Did this answer your question?