如何在 Rust 中专门化结构?

问题描述 投票:0回答:1

我的目的是在以下代码中自定义价值函数的行为:

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

generics rust
1个回答
0
投票

Alexander Krauze 的评论看起来是一个很好的答案。
-- 今天你无法在 Rust 中进行这种专业化(并且可能很快就不会)。您可以为不同的具体类型定义新方法,但它们不能重叠。您可以使用一些宏技巧,但它们的功能有限。

© www.soinside.com 2019 - 2024. All rights reserved.