小编Arj*_*jan的帖子

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

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

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

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

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

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

rust

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

用于性能的Vector或MutableList/ListBuffer

如果这是重复的道歉 - 我做了一些搜索,并没有找到我需要的东西.

我们的应用程序具有性能关键部分,可将Play 2.0 Enumerator(可被视为a Stream)转换为List(或类似).我们将使用该fold方法,Enumerator问题是最有效的方法.(我将使用Stream而不是Enumerator代码,但想法应该是相同的.)

val incoming: Stream[Int] = ???
val result: Seq[Int] = incoming.fold(Seq.empty)(_ + _)
val result2: Seq[Int] = incoming.fold(MutableList.empty(_ += _).toSeq
Run Code Online (Sandbox Code Playgroud)

所以问题基本上是,如何重复附加到一个不可变的Vector比较,反复附加到一个可变的MutableListListBuffer性能关键代码?我们之所以被抛弃只是List因为我们需要O(1)追加(而不是前置).但是,可变数据结构是否在性能或垃圾收集方面为我们带来了任何东西?

performance scala immutability playframework-2.0

5
推荐指数
1
解决办法
3943
查看次数