我可以从函数返回值和引用吗?

时间:2018-06-16 21:40:17

标签: 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上的方法不是我想要的。注意我的值是如何不可变的:我理解引用会引起别名,这个问题与此无关。

0 个答案:

没有答案