Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 死机运行异步代码,同时丢弃代码_Rust_Async Await_Rust Tokio_Rusoto - Fatal编程技术网

Rust 死机运行异步代码,同时丢弃代码

Rust 死机运行异步代码,同时丢弃代码,rust,async-await,rust-tokio,rusoto,Rust,Async Await,Rust Tokio,Rusoto,我有一个使用#[tokio::main]的应用程序,它在AWS的一个任务中创建了多个资源。我已经在Drop处理程序中实现了清理这些资源。但是,这些清理函数是异步的,因此我在上使用了block_,以确保它们在从drop返回之前同步运行 use futures::executor::block_on; struct EventQueue(pub String); impl Drop for EventQueue { fn drop(&mut self) { blo

我有一个使用
#[tokio::main]
的应用程序,它在AWS的一个任务中创建了多个资源。我已经在
Drop
处理程序中实现了清理这些资源。但是,这些清理函数是异步的,因此我在上使用了
block_,以确保它们在从
drop
返回之前同步运行

use futures::executor::block_on;

struct EventQueue(pub String);

impl Drop for EventQueue {
    fn drop(&mut self) {
        block_on(delete_queue(&self.0))
    }
}

pub async fn delete_queue(queue_url: &str) {
    let sqs = rusoto_sqs::SqsClient::new(REGION);
    sqs.delete_queue(DeleteQueueRequest {
        queue_url: queue_url.to_string(),
    })
    .await
    .unwrap();
}
main
函数直到出现一个
信号::ctrl_c().wait.unwrap()完成,在此之后,我认为Tokio运行时将被删除,生成的任务将被取消。我认为与
上的
block_的交互失败,因为运行时不再可用


以下是实现异步析构函数非常棘手,已经做了一些工作,但不运行
drop
不被认为是一个bug。

我发现在tokio 0.2.11中使用。防止了恐慌,并有了理想的行为。我想是因为
选择在运行时超出范围之前取消其他未来