Clippy lints / Style
Clippy lint · Style · checked with Clippy 0.1.99
clippy::missing_safety_doc: Checks for the doc comments of publicly visible unsafe functions and warns if there is no # Safety section
What it meansChecks for the doc comments of publicly visible unsafe functions and warns if there is no # Safety section. It is in the style group and warns by default.
Does it matter?
Unsafe functions should document their safety preconditions, so that users can be sure they are using them safely.
Code that works but is not idiomatic Rust. Warns by default.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
/// This function should really be documented
pub unsafe fn start_apocalypse(u: &mut Universe) {
unimplemented!();
}
Write this instead
/// # Safety
///
/// This function should not be called before the horsemen are ready.
pub unsafe fn start_apocalypse(u: &mut Universe) {
unimplemented!();
}
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::missing_safety_doc)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
missing_safety_doc = "allow"One run
cargo clippy -- -A clippy::missing-safety-docThe [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.
Settings in clippy.toml
check-private-items: Whether to also run the listed lints on private items.
Clippy's own documentation
What it does
Checks for the doc comments of publicly visible
unsafe functions and warns if there is no # Safety section.
Why is this bad?
Unsafe functions should document their safety preconditions, so that users can be sure they are using them safely.
Examples
/// This function should really be documented
pub unsafe fn start_apocalypse(u: &mut Universe) {
unimplemented!();
}
At least write a line about safety:
/// # Safety
///
/// This function should not be called before the horsemen are ready.
pub unsafe fn start_apocalypse(u: &mut Universe) {
unimplemented!();
}
Configuration
-
check-private-items: Whether to also run the listed lints on private items.(default:
false)
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- needless_returnunneeded `return` statement
- new_without_defaultChecks for public types with a pub fn new() -> Self method and no implementation of Default
- len_zeroChecks for getting the length of something via .len() just to compare to zero, and suggests using .is_empty() where applicable
- mem_replace_option_with_somereplacing an `Option` with `Some(..)`
- mem_replace_with_defaultreplacing a value of type `T` with `T::default()`
- missing_enforced_import_renamesChecks for imports that do not rename the item as specified in the enforced-import-renames config option. Note: Even though this lint is warn-by-default, it will only trigger if import renames are defined in the clippy.toml file
- mixed_attributes_styleChecks for items that have the same kind of attributes with mixed styles (inner/outer)
- mixed_case_hex_literalsinconsistent casing in hexadecimal literal
- module_inceptionChecks for modules that have the same name as their parent module
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::needless_returnunneeded `return` statementRead it next →Did this answer your question?