rust - 我可以从函数返回一个值和对它的引用吗?
问题描述
这是一个片段:
struct T {}
fn test<'a>() -> (T, &'a T) {
let t = T{};
(t, &t)
}
编译器告诉我该值的t
寿命不够长,这并不完全正确,因为假设的调用者将拥有该值,所以他也得到一个参考是合理的:
let (value, reference) = test(); // The value is alive here, so it's perfectly fine to reference it at this point.
有没有办法实现这种行为?如果没有,除了像这样在单独的行上获得参考之外,是否有任何可能的解决方法?
let value = test();
let reference = &value;
我的实际案例不是关于参考,而是关于我不想超过返回的标记值T
,但原理是一样的。而且我希望用户只能获得一个标记,所以一个方法T
并不是我想要的。请注意我的值是如何不可变的:我知道引用会导致别名,而这个问题与此无关。
解决方案
推荐阅读
- r - 为从不同起点连续增加的 4 个数字创建 R 序列
- rust - 为什么迭代器的实现在异步上下文中不够通用?
- sql - SQL GROUP BY 与 MAX 作为 Linq?
- r - 只有一些数据系列的图例 - ggplot - R
- reactjs - React Js、TypeScript、将标签映射到下拉菜单
- python - 在不同操作系统中从 github 克隆项目时出现虚拟环境问题
- php - 使用 amazon ses php SDK 发送多封电子邮件
- c - 在 C 中,声明一个二维字符数组还是一个参差不齐的字符串数组更节省空间?(具体问题如下)
- flutter - 缓存数据还是在flutter中使用存储?
- python-3.x - s3 后签名与 AWS 文档示例不匹配(python)