小编mis*_*___的帖子

为什么const原子变量没有更新,但静态原子变量是?

我有这个代码:

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

rust

15
推荐指数
1
解决办法
459
查看次数

作为Rust中函数调用的结果,创建const或静态字符串的方法有哪些?

我想有一个conststatic,它是一个随机数,后面加一个点。在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)

我收到类似的错误

  1. 静态调用仅限于struct和enum构造函数
  2. 静态包含未实现的表达式类型
  3. 借来的价值寿命不长

我在这里有哪些选择?解决此问题的简便方法是什么?

rust

5
推荐指数
0
解决办法
142
查看次数

如何使用 Tokio 远程关闭正在运行的任务

我有一个正在接收数据的 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它发送一个信号,让它停止睡眠并关闭呢?

rust rust-tokio

4
推荐指数
1
解决办法
1140
查看次数

标签 统计

rust ×3

rust-tokio ×1