gpt4 book ai didi

rust - 预期的 fn 指针,发现闭包

转载 作者:行者123 更新时间:2023-12-03 11:44:27 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Returning a closure from a function

(4 个回答)



What is the correct way to return an Iterator (or any other trait)?

(2 个回答)


1年前关闭。




我正在尝试编写一个函数,该函数从零开始累积供应商提供的给定范围内的数字:

fn accumulate<F>(size: usize, supplier: F) -> Successors<f64, fn(&f64) -> Option<f64>>
where F: Fn(usize) -> f64 {
let mut range = 0..size;
successors(
Some(0.0),
|acc| range.next().map(|n| *acc + supplier(n)),
)
}
错误信息是:
114 |         |acc| range.next().map(|n| *acc + supplier(&config, n)),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected fn pointer, found closure
这很奇怪,因为后继函数需要一个闭包,即 FnMut .我究竟做错了什么?

最佳答案

检查您的 accumulate 的签名函数:返回类型为Successors<f64, fn(&f64) -> Option<f64>> ,即后继者期望第二个通用参数为 fn(&f64) -> Option<f64> - 一个 fn .
尝试将其更改为 Fn(&f64) -> Option<f64> - 根据@ChrisJesterYoung 的评论。

关于rust - 预期的 fn 指针,发现闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64688428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com