我正在为我的数据库实现一个事务处理系统,在该数据库中,我希望事务处理ID在初始化时增加1:
pub struct Transaction {
id: i32,
}
impl Transaction {
fn new() -> Transaction {
}
}
assert_eq!(1, Transaction::new().id)
assert_eq!(2, Transaction::new().id)
这可以由Java中的static AtomicLong
实现。
std::sync::atomic
模块中定义了相似的原子类型。对于您的摘要,您可以选择AtomicI32
:AtomicI32
我也建议您查看use std::sync::atomic::{AtomicI32, Ordering};
pub struct Transaction {
id: AtomicI32,
}
let transaction = Transaction {
id: AtomicI32::new(1),
};
assert_eq!(1, transaction.id.fetch_add(1, Ordering::Relaxed));
assert_eq!(2, transaction.id.load(Ordering::Relaxed));
。