Rust 有带状态的匿名闭包。我可以对命名函数做同样的事情吗?
(无效的伪代码)
fn counting_function()->i32 {
let mut static counter = 0;
counter = counter + 1;
return counter.clone();
}
我知道我可以使用结构和函数/特征来做到这一点。而且我知道迭代器是正确的方法。但是抛开具有特征和迭代器的结构,我可以在不将任何负担(初始化结构)传递给调用者的情况下做到这一点吗?
最佳答案
这是一个使用原子的线程安全变体:
use std::sync::atomic::{AtomicUsize, Ordering};
fn counting_function() -> usize {
static COUNTER: AtomicUsize = AtomicUsize::new(0);
let result = COUNTER.fetch_add(1, Ordering::Relaxed);
result
}
但我会说这实际上是一种代码味道。
关于rust - 如何在 Rust 中为函数添加状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55893888/