【发布时间】:2019-04-02 16:10:50
【问题描述】:
是否可以编写一个折叠迭代器的 const 函数?当我尝试时:
const fn foo(s: &str) -> u64 {
return s.chars().fold(0, |accumulator, char| -> u64 {
return accumulator ^ (char as u64);
});
}
我得到一个编译器错误:
error: function pointers in const fn are unstable
--> src/lib.rs:2:30
|
2 | return s.chars().fold(0, |accumulator, char| -> u64 {
| ______________________________^
3 | | return accumulator ^ (char as u64);
4 | | });
| |_____^
我认为我的匿名函数 |x, y| -> x { ... } 是作为指向 fold() 的函数指针传递的,这就是导致错误的原因。
是否有某种 const lambda 可以在这里传递给 fold,或者我可以只使用 for 循环并将结果累积到一个可变变量中,然后从 foo 函数返回?我完全没有 Rust 经验...
【问题讨论】: