小编yjl*_*lee的帖子

Rust 中的 tokio::spawn 和 tokio::task::spawn 有什么区别?

我正在制作一个能够使用tokio.

我通过 创建了一个任务tokio::spawn,并且我tokio::task::spawn也看到了工作。

tokio::sapwn和 和有什么区别tokio::task::spawn

rust rust-tokio

12
推荐指数
1
解决办法
2114
查看次数

当 tokio 运行时关闭时,在 Rust 中使用 tokio::spawn 创建的任务也会被删除吗?

我正在测试主线程终止时使用 tokio::spawn 创建的任务的行为方式。根据tokio 文档,当运行时关闭时,所有任务都会被删除。

无法保证生成的任务将执行完成。当运行时关闭时,所有未完成的任务都将被删除,无论该任务的生命周期如何。

然而,当测试如下运行时,即使运行时终止,任务似乎也没有终止。

Cargo.toml

[package]
name = "tokio_test"
version = "0.1.0"
edition = "2021"

[dependencies]
tokio = { version = "1", features = ["rt", "test-util", "macros", "rt-multi-thread"]}
Run Code Online (Sandbox Code Playgroud)

主程序.rs

use std::{thread, time};
#[tokio::main]
async fn main() {
    println!("tokio test - main thread...");
    tokio::spawn(async move {
        let mut i = 0;
        loop {
            println!(
                "tokio test - tokio spawn(worker) thread... sleep(1): {}/10",
                i
            );
            thread::sleep(time::Duration::from_millis(1000));
            i += 1;
         
            if i > 3 {
                break;
            }
        }
      
    }); …
Run Code Online (Sandbox Code Playgroud)

rust rust-tokio

3
推荐指数
1
解决办法
1665
查看次数

为什么 Futures 在 Rust 中使用 pin?

据我了解,这pin是用来将数据固定到一个内存的。当我poll()在 Trait 中使用该方法时Future,它会被连续调用,直到返回Poll::Ready。是否使用a来确保调用pin时数据放置在同一内存中?poll()换句话说,它是否用于防止编译器在poll调用时移动可能有内存移动的代码(生成编译错误)?

rust

2
推荐指数
1
解决办法
1004
查看次数

我可以将原始字符串文字与变量一起使用吗?

我知道我可以使用格式!创建一个带有变量的字符串。

let name = "rust";
format!("Hi, {}", name);
Run Code Online (Sandbox Code Playgroud)

但是,我使用原始字符串文字来生成 Json 格式的数据(这样我就不需要使用转义字符)。有没有办法在使用原始字符串文字时在字符串中使用变量?

rust

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

对于向量值,for循环还是for_each哪个更快?

我正在尝试将向量中的每个项目插入到地图中。for-loop使用 a或 via 迭代器,哪一个是首选且更快for_each

rust

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

标签 统计

rust ×5

rust-tokio ×2