gpt4 book ai didi

rust - 为什么 MutexGuard 在结构中需要生命周期参数,但在函数返回类型中不需要?

转载 作者:行者123 更新时间:2023-11-29 08:09:27 26 4
gpt4 key购买 nike

<分区>

我想移动一个MutexGuard。从函数返回一个 MutexGuard 可以正常工作,无需提供生命周期参数。但是,当将守卫打包到结构中时,编译器需要守卫的生命周期参数。

下面的代码编译没有错误:

struct Queue {
queue: Mutex<Vec<i32>>,
}

impl Queue {
pub fn get_mutex_guard(&self) -> MutexGuard<Vec<i32>> {
self.queue.lock().unwrap()
}
}

当我尝试将 MutexGuard 打包到结构中时:

struct QueueHandle {
handle: MutexGuard<Vec<i32>>,
}

编译器提示缺少生命周期参数:

error[E0106]: missing lifetime specifier
--> mutex-guard.rs:8:13
|
8 | handle: MutexGuard<Vec<i32>>
| ^^^^^^^^^^^^^^^^^^^^ expected lifetime parameter

据我了解,函数返回类型和结构对生命周期参数的要求应该相同。我在这里缺少什么?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com