Можно ли написать константную функцию, которая сворачивается поверх итератора? Когда я пытаюсь:
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()
, и именно это вызывает ошибку.
Есть ли какая-то константная лямбда, которую я могу здесь передать fold
, или я могу просто использовать цикл for и накапливать результат в изменяемой переменной, которую я затем возвращаю из функции foo
? У меня нет абсолютно никакого опыта в Rust ...