indexing_slicing: Clarify documentation (#13780)
changelog: [`indexing_slicing`]: Clarify the relationship between indexing_slicing and out_of_bound_indexing, clarify that this lint is about possible panics based on runtime values, and fix array example to not trigger the out_of_bound_indexing lint.
This commit is contained in:
commit
bfb87b9d34
1 changed files with 17 additions and 10 deletions
|
|
@ -42,12 +42,15 @@ declare_clippy_lint! {
|
|||
|
||||
declare_clippy_lint! {
|
||||
/// ### What it does
|
||||
/// Checks for usage of indexing or slicing. Arrays are special cases, this lint
|
||||
/// does report on arrays if we can tell that slicing operations are in bounds and does not
|
||||
/// lint on constant `usize` indexing on arrays because that is handled by rustc's `const_err` lint.
|
||||
/// Checks for usage of indexing or slicing that may panic at runtime.
|
||||
///
|
||||
/// This lint does not report on indexing or slicing operations
|
||||
/// that always panic, clippy's `out_of_bound_indexing` already
|
||||
/// handles those cases.
|
||||
///
|
||||
/// ### Why restrict this?
|
||||
/// To avoid implicit panics from indexing and slicing.
|
||||
///
|
||||
/// There are “checked” alternatives which do not panic, and can be used with `unwrap()` to make
|
||||
/// an explicit panic when it is desired.
|
||||
///
|
||||
|
|
@ -58,27 +61,31 @@ declare_clippy_lint! {
|
|||
/// ### Example
|
||||
/// ```rust,no_run
|
||||
/// // Vector
|
||||
/// let x = vec![0; 5];
|
||||
/// let x = vec![0, 1, 2, 3];
|
||||
///
|
||||
/// x[2];
|
||||
/// x[100];
|
||||
/// &x[2..100];
|
||||
///
|
||||
/// // Array
|
||||
/// let y = [0, 1, 2, 3];
|
||||
///
|
||||
/// &y[10..100];
|
||||
/// &y[10..];
|
||||
/// let i = 10; // Could be a runtime value
|
||||
/// let j = 20;
|
||||
/// &y[i..j];
|
||||
/// ```
|
||||
///
|
||||
/// Use instead:
|
||||
/// ```no_run
|
||||
/// # let x = vec![0; 5];
|
||||
/// # let y = [0, 1, 2, 3];
|
||||
/// # let x = vec![0, 1, 2, 3];
|
||||
/// x.get(2);
|
||||
/// x.get(100);
|
||||
/// x.get(2..100);
|
||||
///
|
||||
/// y.get(10);
|
||||
/// y.get(10..100);
|
||||
/// # let y = [0, 1, 2, 3];
|
||||
/// let i = 10;
|
||||
/// let j = 20;
|
||||
/// y.get(i..j);
|
||||
/// ```
|
||||
#[clippy::version = "pre 1.29.0"]
|
||||
pub INDEXING_SLICING,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue