我的目的是在以下代码中自定义价值函数的行为:
struct GenVal<T> {
gen_val: T,
}
impl<T> GenVal<T> {
fn value(&self) -> &T {
&self.gen_val
}
}
impl GenVal<u32> {
fn value(&self) -> &u32 {
&self.gen_val
}
}
fn main() {
let y = GenVal { gen_val: 3i32 };
println!("{}", y.value());
}
它告诉“值”被定义了两次 - 对我来说似乎完全荒谬。
谁能解释一下为什么会发生这种情况?
Godbolt 示例:https://godbolt.org/z/czE3Pqfbx
Alexander Krauze 的评论看起来是一个很好的答案。
-- 今天你无法在 Rust 中进行这种专业化(并且可能很快就不会)。您可以为不同的具体类型定义新方法,但它们不能重叠。您可以使用一些宏技巧,但它们的功能有限。