相关疑难解决方法(0)

从函数返回闭包

注意:这个问题是在Rust第一次稳定发布之前提出的.之后发生了很多变化,函数中使用的语法甚至不再有效.尽管如此,Shepmaster的答案仍然非常出色,这使得这个问题值得保留.


最后,未装箱的封闭装置着陆了,所以我正在试验它们,看看你能做些什么.

我有这个简单的功能:

fn make_adder(a: int, b: int) -> || -> int {
    || a + b
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到了一个missing lifetime specifier [E0106]错误.我试图通过将返回类型更改为修复此问题||: 'static -> int,但后来又出现了另一个错误cannot infer an appropriate lifetime due to conflicting requirements.

如果我理解正确,关闭是未装箱的,所以它拥有ab.我觉得它需要一辈子似乎很奇怪.我怎样才能解决这个问题?

rust

32
推荐指数
3
解决办法
1万
查看次数

如何在Rust中的签名中使用Fn traits/closures

我想编写一个int-returning函数,它接受一个带零参数的闭包,一个带一个参数的闭包,一个带两个参数的闭包,其中所有闭包参数都是类型int,每个闭包返回f32.

这个函数的签名是什么样的?

现在我想接受通过FnFnMut特征.签名是什么样的?是否需要使用箱子中的功能?如果是这样,哪些是为什么?

如果知道:它看起来像糖?脱?

如果知道:未来可能会发生什么变化?

rust

10
推荐指数
2
解决办法
7921
查看次数

你能创建一个函数,它接受另一个函数和一个参数,并返回一个嵌套函数调用的惰性流吗?

在Clojure中,我使用了一个名为iterate:

返回x,(fx),(f(fx))等的延迟序列.f必须没有副作用

Rust中有类似的东西吗?

例如,我有这个函数,我想传递给一个带有数字的函数,然后迭代一个流/范围/向量,直到找到Some(1):

fn coltz(n: u64) -> Option<u64> {
    match n % 2 {
        0 => Some(n / 2), 
        _ => Some(3 * n + 1)
    }
}
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
114
查看次数

标签 统计

rust ×3