gpt4 book ai didi

generics - 无法为泛型类型的结构实现fmt::Display

转载 作者:行者123 更新时间:2023-12-03 11:36:05 26 4
gpt4 key购买 nike

我有一个接受通用类型T的结构角色。我无法弄清楚如何为角色实现fmt::Display特征。这是我尝试的:

pub struct Character<T> {
pub name: String,
pub level: u32,
pub class: T,
pub attack: i32,
pub defense: i32,
pub speed: i32,
}

impl fmt::Display for Character<T> {
// Display trait for Player
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "[{}] {} (Lv {})", self.class, self.name, self.level)
}
}

错误指出在 impl fmt::Display for Character<T>行的范围内找不到T

我已经尝试搜索您将如何执行此操作,但是我无法弄清楚。

最佳答案

use std::fmt;

impl<T> fmt::Display for Character<T>
where
T: fmt::Display,
{
// Display trait for Player
fn fmt(&self, f: &mut std::fmt::Formatter) -> fmt::Result {
write!(f, "[{}] {} (Lv {})", self.class, self.name, self.level)
}
}
  • impl<T>指出以下是一些通用的实现(与Character一样)
  • where T: std::fmt::Display要求T实现Display。这是必需的,因为您要write self.class,它的类型是T
  • 关于generics - 无法为泛型类型的结构实现fmt::Display,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59118605/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com