RS.CLIPPY.OCTAL_ESCAPES

String escape sequences looking like octal characters

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

What it does

Checks for \\0 escapes in string and byte literals that look like octal character escapes in C.

Why is this bad?

C and other languages support octal character escapes in strings, where a backslash is followed by up to three octal digits. For example, \\033 stands for the ASCII character 27 (ESC). Rust does not support this notation, but has the escape code \\0 which stands for a null byte/character, and any following digits do not form part of the escape sequence. Therefore, \\033 is not a compiler error but the result may be surprising.

Known problems

The actual meaning can be the intended one. \\x00 can be used in these cases to be unambiguous.

The lint does not trigger for format strings in print!(), write!() and friends since the string is already preprocessed when Clippy lints can see it.

Example

let one = "\\033[1m Bold? \\033[0m";  // \\033 intended as escape
let two = "\\033\\0";                 // \\033 intended as null-3-3

Use instead:

let one = "\\x1b[1mWill this be bold?\\x1b[0m";
let two = "\\x0033\\x00";