从 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
,因此会返回对切片元素之一的引用。
以下程序 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
,因此会返回对切片元素之一的引用。