是否可以通过Rust中的模式匹配来打开通用元组的包装?

时间:2019-12-12 04:26:36

标签: generics rust argument-unpacking

可以执行以下操作:

fn foo((a, b): (i32, f32)) {
  unimplemented!();
}

,可以通过以下方式执行:

let ab = (1, 2.0);
foo(ab);

实际上,ab被分别解压缩到ab中。

我想对泛型做类似的事情。

pub struct QuadTree<(Kx, Ky), V> {
  ...
}

这是否有用,我不确定如何进行编译。理想情况下,我希望能够调用这样的内容:

struct Point(i32, i32);    

...

let quad_tree: QuadTree<Point, String> = QuadTree::new();

如果没有宏,Rust每晚有可能吗?

1 个答案:

答案 0 :(得分:3)

您可能想要以下内容:

pub struct QuadTree<GenericPoint, V> {
  ...
}

然后,您可以(通过特征)要求GenericPoint提供x-和y-替换符。可能还需要GenericPointKxKy定义类型别名。