可以执行以下操作:
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 上这可能吗?
最佳答案
您可能需要以下内容:
pub struct QuadTree<GenericPoint, V> {
...
}
然后,您可以要求(通过特征)GenericPoint
提供 x 和 y 访问器。您可能还需要 GenericPoint
为 Kx
和 Ky
定义类型别名。
关于generics - 是否可以通过 Rust 中的模式匹配来解压通用元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59297712/