gpt4 book ai didi

rust - 我可以在 Rust 中实现将信息添加到外部类型的特征吗?

转载 作者:行者123 更新时间:2023-11-29 07:58:05 25 4
gpt4 key购买 nike

我只是实现了一个简单的特征来保存结构属性的历史:

fn main() {
let mut weight = Weight::new(2);
weight.set(3);
weight.set(5);
println!("Current weight: {}. History: {:?}", weight.value, weight.history);
}

trait History<T: Copy> {
fn set(&mut self, value: T);
fn history(&self) -> &Vec<T>;
}

impl History<u32> for Weight {
fn set(&mut self, value: u32) {
self.history.push(self.value);
self.value = value;
}
fn history(&self) -> &Vec<u32> {
&self.history
}
}

pub struct Weight {
value: u32,
history: Vec<u32>,
}

impl Weight {
fn new(value: u32) -> Weight {
Weight {
value,
history: Vec::new(),
}
}
}

我不认为这是可能的,但是你可以将 History 特征(或类似的东西)添加到还没有 history 属性的东西中吗(像 u32String), 有效地附加一些关于变量取值的信息?

最佳答案

没有。 Traits 不能将数据成员添加到现有结构中。实际上,只有程序员可以通过修改结构的定义来做到这一点。包装结构或哈希表是可行的方法。

关于rust - 我可以在 Rust 中实现将信息添加到外部类型的特征吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47364211/

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