2

可以执行以下操作:

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

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

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

实际上ab是拆包成a单独b的。

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

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

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

struct Point(i32, i32);    

...

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

如果没有宏,这在 Rust nightly 上是否可行?

4

1 回答 1

3

您可能需要以下内容:

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

然后,您可以要求(通过特征)GenericPoint提供 x 和 y 访问器。可能您还需要GenericPointKx和定义类型别名Ky

于 2019-12-12T07:53:22.027 回答