rust-lang/rust-clippy

Manual Duration::{as_nanos,as_milis,as_secs_f64,as_secs_f32} implementation

Open

#6 068 ouverte le 20 sept. 2020

Voir sur GitHub
 (4 commentaires) (0 réactions) (1 assigné)Rust (1 391 forks)batch import
C-enhancementgood first issue

Métriques du dépôt

Stars
 (10 406 stars)
Métriques de merge PR
 (Merge moyen 16j 6h) (79 PRs mergées en 30 j)

Description

What it does

Recognize cases of manual re-implementation of the builtin as_nanos and as_secs_f64 and as_secs_f32 functions on Duration.

Categories

  • Kind: complexity, sometimes also correctness

Drawbacks

MSRV issues, implementing the suggestion might increase the MSRV.

Example

let nanos = diff.as_secs() * 1_000_000_000 + diff.subsec_nanos() as u64;
let milis = diff.as_secs() * 1_000 + diff.subsec_milis() as u64;
let secs_f64 = (diff.as_secs() as f64 * 1_000.0 + diff.subsec_milis() as f64) / 1000.0;
let secs_f64 = diff.as_secs() as f64 + diff.subsec_milis() as f64 / 1_000.0;
let secs_f64 = diff.as_secs() as f64 + diff.subsec_nanos() as f64 / 1_000_000_000.0;

Could be written as:

let nanos = diff.as_nanos() as u64;
let milis = diff.as_millis() as u64;
let secs_f64 = diff.as_secs_f64();
let secs_f64 = diff.as_secs_f64();
let secs_f64 = diff.as_secs_f64();

Guide contributeur