【发布时间】:2021-11-21 04:33:12
【问题描述】:
我有一个向量my_vec: Vec<MyStruct>,我想写一个可以这样调用的函数:
let strings = my_func(&my_vec, |o| o.some_string);
let numbers = my_func(&my_vec, |o| o.foo + 5);
所以基本上我需要将一个引用传递给向量和一个闭包f,我需要在向量上调用.map(f) 的函数加上其他一些东西,并返回一个与一个在闭包中返回。
【问题讨论】:
-
函数应该返回什么?
-
Netwave,我已经在问题中解释了这一点:“并返回一个新的值向量,其类型与闭包中返回的值相同”。所以,它应该是通用的。例如,如果传递的闭包返回
i64,my_func应该返回Vec<i64>。 -
我建议看看documentation of
Iterator::map()并为你的闭包参数使用相同的特征边界,即fn my_func<B, F>(v: Vec<MyStruct>, f: F) -> Vec<B> where F: FnMut(MyStruct) -> B。