gpt4 book ai didi

rust - 如何返回对临时值的引用?

转载 作者:行者123 更新时间:2023-11-29 08:23:10 24 4
gpt4 key购买 nike

您好,我想知道如何实现以下代码:

struct TimedCache<T> {
data: RwLock<T>,
f: fn() -> T,
}

impl<T> TimedCache<T> {
fn get(&self) -> &T {
&self.data.read().unwrap()
}
}

因为我得到:cannot return reference to temporary value

最佳答案

实际上非常可靠和简单 - 我们不返回 &T,相反,我们返回守卫实现的特征,它允许我们到达 &T: 取消引用!

impl<T> TimedCache<T> {
fn get(&self) -> impl Deref<Target = T> + '_ {
let lock = self.data.read();
lock.unwrap()
}
}

这具有引用的所有优点,而且没有任何缺点 - 您甚至不需要知道您实际上正在操纵 RwLock 读保护。在外部,这看起来像是一个实现了 deref() 的对象。

这方面的完整示例,包括使用示例,在 playground

关于rust - 如何返回对临时值的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58347832/

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