从 Rust 中的函数返回引用

Returning reference from a function in Rust

以下程序 return 引用任何给定的最大值 vector.I 为此使用了泛型,但不起作用。

fn largest<T : PartialOrd>(vec : &[T]) -> &T{

let mut biggest = vec[0];
 
for &item in vec{
    if item > biggest{
        biggest = item
    }
 }

 &biggest
}

我知道我正在 return引用一个局部变量,所以它不会编译。另一种解决方案是使用 copy 特征,例如

fn largest<T : PartialOrd + Copy>(vec : &[T]) -> T{}

有什么方法可以让我 return 参考并避免使用 Copy 特征?

这可能是您想要的:

fn largest<T : PartialOrd>(vec : &[T]) -> &T{

let mut biggest = &vec[0];
 
for item in vec{
    if item > biggest{
        biggest = item
    }
 }

 biggest
}

biggest 是类型 mut &T 的引用,因此稍后可以在 biggest = item.

行重新绑定引用

通过这种方式,您不会在代码中复制 T,因此会返回对切片元素之一的引用。