gpt4 book ai didi

rust - Rust 宏可以生成可复制的 getter 吗?

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

derive-getters is a nice crate那将为你创造 setter/getter 。但是,它总是生成返回引用的 getter,即使对于 Copy 类型也是如此。例如对于这个结构:

#[derive(Getters)]
pub struct MyCheesyStruct {
x: i64,
y: i64,
}

它将生成:

impl MyCheesyStruct {
pub fn x(&self) -> &i64 {
&self.x
}

pub fn y(&self) -> &i64 {
&self.y
}
}

这让用户的事情变得比他们需要的更麻烦,因为 i64 实现了 Copy。所以我开始怀疑是否有可能做得更好?但是宏在标记级别运行,因此它们对类型/特征一无所知。有没有办法获得此功能,除了使用指令手动注释成员以指定他们应该在没有借用的情况下返回?这是 C++ 中类型级元编程所擅长的事情。

最佳答案

So I started to wonder if it was possible to do better?

作为部分答案,我可以说开箱即用的原始类型是可行的。对于其他类型,您可能需要在字段上附加注释,例如:

#[derive(Copy)]
pub struct Point {
x: i64,
y: i64,
}

#[derive(Getters)]
pub struct MyCheesyStruct {
#[noref] // generates non-borrow getter
point: Point,
}

或者您可以制作一个为所有字段生成非借用 getter 的过程宏版本。

关于rust - Rust 宏可以生成可复制的 getter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62868356/

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