我有这个代码:
use std::sync::atomic::{AtomicUsize, Ordering};
const SOME_VAR: AtomicUsize = AtomicUsize::new(0);
fn main() {
println!("{}", SOME_VAR.load(Ordering::SeqCst));
println!("{}", SOME_VAR.fetch_add(10, Ordering::SeqCst));
println!("{}", SOME_VAR.load(Ordering::SeqCst));
}
Run Code Online (Sandbox Code Playgroud)
这打印0 0 0没有任何错误.在Java中,我可以使用a final HashMap并添加(k, v)它.在Rust中,我很惊讶编译器没有对我大喊大叫,但也没有增加我的原子值.我在这里做错了吗?
如果我使用static:
static SOME_VAR: AtomicUsize = AtomicUsize::new(0);
Run Code Online (Sandbox Code Playgroud)
我得到了结果0 0 10.为什么它不起作用const?
我想有一个const或static,它是一个随机数,后面加一个点。在Java中,它产生了我想要的东西,但是在Rust中,我得到了各种各样的错误
const SOME_STR: &'static str = format!("{}.", rand::random::<u64> ()).as_str();
static SOME_STR: &'static str = format!("{}.", rand::random::<u64> ()).as_str();
Run Code Online (Sandbox Code Playgroud)
我收到类似的错误
我在这里有哪些选择?解决此问题的简便方法是什么?
我有一个正在接收数据的 UDP 套接字
pub async fn start() -> Result<(), std::io::Error> {
loop {
let mut data = vec![0; 1024];
socket.recv_from(&mut data).await?;
}
}
Run Code Online (Sandbox Code Playgroud)
.await当没有数据进入时,此代码当前被阻塞。我想从我的主线程优雅地关闭我的服务器,那么我如何向.await它发送一个信号,让它停止睡眠并关闭呢?