G.STR.01 在实现Display特质时不应调用to_string()方法

【级别】 要求

【描述】

因为 to_string 是间接通过 Display 来实现的,如果实现 Display 的时候再使用 to_tring 的话,将会无限递归。

【反例】


#![allow(unused)]
fn main() {
use std::fmt;

struct Structure(i32);
impl fmt::Display for Structure {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{}", self.to_string()) // 不符合
    }
}
}

【正例】


#![allow(unused)]
fn main() {
use std::fmt;

struct Structure(i32);
impl fmt::Display for Structure {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "{}", self.0) // 符合
    }
}
}

【Lint 检测】

lint nameClippy 可检测Rustc 可检测Lint Grouplevel
to_string_in_displayyesnocorrectnessdeny