Generics 是否可以通过Rust中的模式匹配来解压通用元组?

Generics 是否可以通过Rust中的模式匹配来解压通用元组?,generics,rust,argument-unpacking,Generics,Rust,Argument Unpacking,可以执行以下操作: fn foo((a, b): (i32, f32)) { unimplemented!(); } pub struct QuadTree<GenericPoint, V> { ... } 可通过以下方式执行: let ab = (1, 2.0); foo(ab); 实际上,ab被分别解压为a和b 我想对泛型做一些类似的事情 pub struct QuadTree<(Kx, Ky), V> { ... } pub结构四叉树{ ...

可以执行以下操作:

fn foo((a, b): (i32, f32)) {
  unimplemented!();
}
pub struct QuadTree<GenericPoint, V> {
  ...
}
可通过以下方式执行:

let ab = (1, 2.0);
foo(ab);
实际上,
ab
被分别解压为
a
b

我想对泛型做一些类似的事情

pub struct QuadTree<(Kx, Ky), V> {
  ...
}
pub结构四叉树{
...
}
这是否有用,我不知道如何编译。理想情况下,我希望能够这样称呼:

struct Point(i32, i32);    

...

let quad_tree: QuadTree<Point, String> = QuadTree::new();
结构点(i32,i32);
...
让四叉树:QuadTree=QuadTree::new();

在没有宏的情况下,Rust nightly是否可以执行此操作?

您可能需要以下内容:

fn foo((a, b): (i32, f32)) {
  unimplemented!();
}
pub struct QuadTree<GenericPoint, V> {
  ...
}
pub结构四叉树{
...
}

然后,您可以(通过特征)要求
GenericPoint
提供x轴和y轴辅助。您可能还需要
GenericPoint
Kx
Ky
定义类型别名。您正在将值级别构造与类型级别1合并。我建议你澄清这个问题,否则它应该关闭。@edwardw抱歉,我不理解你的评论。你所说的值级构造和类型级1是什么意思?这解决了我的具体问题(+1),但我仍然想知道是否有一种方法可以实际执行模式匹配。“你知道一种方法吗?”Saxpy很不幸,我认为现在的锈迹是不可能的。