可以执行以下操作:
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每晚有可能吗?
答案 0 :(得分:3)
您可能想要以下内容:
pub struct QuadTree<GenericPoint, V> {
...
}
然后,您可以(通过特征)要求GenericPoint
提供x-和y-替换符。可能还需要GenericPoint
为Kx
和Ky
定义类型别名。