如何在 Rust 中实现具有生命周期的结构的显示特征?

Eka*_*Eka 0 struct lifetime rust

我有一个包含字符串 (&str) 字段的结构,

struct Test<>{
    name: &str,
    city: &str,
}
Run Code Online (Sandbox Code Playgroud)

在编译这个结构时,它返回了一个生命周期错误,并根据编译器的建议为其添加了生命周期<'a>,这是有效的。

use std::fmt;

#[derive(Debug)]
struct Test<'a>{
    name: &'a str,
    city: &'a str,
}

impl fmt::Display for Test {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "name:{} city:{}", self.name,self.city)
    }
}


fn main(){
    let a = Test{name:"John",city:"London"};
    println!("{}",a);
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试在这个结构上实现显示特征,但它给出了这个错误。

  | impl fmt::Display for Test {
  |                       ^^^^- help: indicate the anonymous lifetime: `<'_>`
Run Code Online (Sandbox Code Playgroud)

如何在 Rust 中实现具有生命周期的结构的显示特征?

tes*_*08s 6

简短回答:使用

impl<'a> fmt::Display for Test<'a>
Run Code Online (Sandbox Code Playgroud)