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

标签 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 nightly 上这可能吗?

最佳答案

您可能需要以下内容:

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

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

关于generics - 是否可以通过 Rust 中的模式匹配来解压通用元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59297712/

相关文章:

generics - VHDL从实体中提取常量

swift - 返回一个符合泛型约束的对象

rust - 为什么我不能将 &&mut 转换为 && ?

string - 我如何在 Rust 中将 &str 转换为 ~str?

python - 如何在 Python 中解压参数?

python - 有没有更好的(即更 Pythonic 的)方法来处理打包/解包函数参数?

C# - 编写通用方法来处理位操作

scala - 声明返回枚举的泛型方法

rust - 错误 : can't find crate

Python:python 中的 Splat/unpack 运算符 * 不能在表达式中使用?