很久以前我就有这个问题,从我开始学习 Rust 的第一天起。我了解到 for 的实现std::fmt::Debug有一个函数签名
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result.
起初我只是复制这个签名并将其视为标准样板代码。然而,随着我学到的更多,我意识到这<'_>意味着终生省略。我做了一些研究,根据问题 #49469 <'_>可以让返回值根据参数推断其生命周期(这真的很酷)。但我也看到人们<'_>广泛使用with fmt::Formatter,例如标准库文档和mio,在这些情况下<'_>不应更改默认的生命周期推理行为。另外,我用下面的代码做了一个快速测试
use std::fmt;
struct Test();
impl fmt::Debug for Test {
fn fmt(&self,fmt:&mut fmt::Formatter) -> fmt::Result {
write!(fmt,"test")?;
Ok(())
}
}
fn main() {
let t = Test();
println!("{:?}",t);
}
Run Code Online (Sandbox Code Playgroud)
它编译并运行。那么<'_>这里有一些我不知道的边缘情况的特殊用法吗?
提前致谢。
rust ×1