Clippy lints / Pedantic
Clippy lint · Pedantic · checked with Clippy 0.1.99
clippy::single_char_pattern: Checks for string methods that receive a single-character str as an argument, e.g., _.split("x")
What it meansChecks for string methods that receive a single-character str as an argument, e.g., _.split("x"). It is in the pedantic group and off by default.
Does it matter?
While this can make a perf difference on some systems, benchmarks have proven inconclusive. But at least using a char literal makes it clear that we are looking at a single character.
Stricter lints with some false positives. Off by default; opt in with clippy::pedantic.
How to fix it
Clippy can fix this one for you: run cargo clippy --fix (add --allow-dirty if you have uncommitted changes). Review the diff before you commit.
Flagged
_.split("x");
Write this instead
_.split('x');
Turn it off, or on
It is off by default. To use it, set it to warn or deny:
Whole crate (Cargo.toml)
[lints.clippy]
single_char_pattern = "warn"In code
#![warn(clippy::single_char_pattern)]One run
cargo clippy -- -W clippy::single-char-patternThe [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 string methods that receive a single-character
str as an argument, e.g., _.split("x").
Why is this bad?
While this can make a perf difference on some systems, benchmarks have proven inconclusive. But at least using a char literal makes it clear that we are looking at a single character.
Known problems
Does not catch multi-byte unicode characters. This is by design, on many machines, splitting by a non-ascii char is actually slower. Please do your own measurements instead of relying solely on the results of this lint.
Example
_.split("x");
Use instead:
_.split('x');
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- too_many_linesChecks for functions with a large amount of lines
- missing_errors_docChecks the doc comments of publicly visible functions that return a Result type and warns if there is no # Errors section
- must_use_candidateChecks for public functions that have no #[must_use] attribute, but return something not already marked must-use, have no mutable arg and mutate no statics
- semicolon_if_nothing_returnedconsider adding a `;` to the last statement for consistent formatting
- should_panic_without_expectChecks for #[should_panic] attributes without specifying the expected panic message
- similar_namesbinding's name is too similar to existing binding
- single_match_elseChecks for matches with two arms where an if let else will usually suffice
- stable_sort_primitiveused `sort` on primitive type `i32`
- str_split_at_newlineChecks for usages of str.trim().split("\n") and str.trim().split("\r\n")
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::too_many_linesChecks for functions with a large amount of linesRead it next →Did this answer your question?