gpt4 book ai didi

generics - 如何确保泛型类型具有某个字段

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

pub struct Entity {
name: String,
}

fn walk<T>(entity: T) {
eprintln!("{} walked", entity.name);
}

目前以下代码无法编译,因为类型 T 没有 name 字段。
我知道 Rust 中存在特征限制,是否有一些“字段限制”?

我真的必须这样做吗:

trait HasName {}
impl HasName for Entity {}
fn walk<T: HasName>(entity: T) {
eprintln!("{}", entity.name);
}

哦等等,这也无法编译!
Here's a working example

我的意思是,一定有比那个更简单的东西。
也许像 JavaScript 中那样进行某种结构解构?

最佳答案

目前您无法在特征中拥有关联字段,请参阅this RFC .

但是,您可以向特征添加函数,就像您链接的示例一样。但是,您可以忽略生命周期:

pub trait HasName {
fn name(&self) -> &str;
}

impl HasName for Entity {
fn name(&self) -> &str {
&self.name
}
}

关于generics - 如何确保泛型类型具有某个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61581929/

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