RS.CLIPPY.MANUAL_SPLIT_ONCE

Replace `.splitn(2, pat)` with `.split_once(pat)`

This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: manual_split_once. Copyright ©2025 The Rust Team. All rights reserved.

What it does

Checks for usage of str::splitn(2, _)

Why is this bad?

split_once is both clearer in intent and slightly more efficient.

Example

let s = "key=value=add";
let (key, value) = s.splitn(2, \'=\').next_tuple()?;
let value = s.splitn(2, \'=\').nth(1)?;

let mut parts = s.splitn(2, \'=\');
let key = parts.next()?;
let value = parts.next()?;

Use instead:

let s = "key=value=add";
let (key, value) = s.split_once(\'=\')?;
let value = s.split_once(\'=\')?.1;

let (key, value) = s.split_once(\'=\')?;

Limitations

The multiple statement variant currently only detects iter.next()?/iter.next().unwrap() in two separate let statements that immediately follow the splitn()

Configuration

  • msrv: The minimum rust version that the project supports. Defaults to the rust-version field in Cargo.toml

    (default: current version)