Why is this an issue?

Using contradictory or nonsensical combinations of file open options, such as read(true) with truncate(true), can lead to code that is confusing and harder to read. In some cases, it can result in runtime errors or undefined behavior, potentially causing data corruption or loss.

Code examples

Noncompliant code example

use std::fs::OpenOptions;

OpenOptions::new().read(true).truncate(true); // Noncompliant: Invalid combination of file open options.

Compliant solution

use std::fs::OpenOptions;

OpenOptions::new().write(true).truncate(true); // Compliant: Valid combination of file open options.

Resources

Documentation