Rust 我的min函数有什么问题?

Rust 我的min函数有什么问题?,rust,Rust,我试图编写一个函数,从数组中返回最小数: 功能定义: pub fn min(input_array: &[i32]) -> &i32 { let x = input_array.iter().min().unwrap(); x } 测试: 但当我运行它时,我得到了错误: <std macros>:5:8: 5:33 error: the trait `core::cmp::PartialEq<&i32>` is no

我试图编写一个函数,从数组中返回最小数:

功能定义:

pub fn min(input_array: &[i32]) -> &i32 {
    let x = input_array.iter().min().unwrap();
    x
}
测试:

但当我运行它时,我得到了错误:

    <std macros>:5:8: 5:33 error: the trait `core::cmp::PartialEq<&i32>` is not implemented for the type `_` [E0277]
<std macros>:5 if ! ( * left_val == * right_val ) {
                      ^~~~~~~~~~~~~~~~~~~~~~~~~
src/functional.rs:104:5: 104:50 note: in this expansion of assert_eq! (defined in <std macros>)
<std macros>:5:8: 5:33 help: run `rustc --explain E0277` to see a detailed explanation
error: aborting due to previous error
Could not compile `gettingrusty`. 
:5:8:5:33错误:没有为类型“\\[E0277]实现trait`core::cmp::PartialEq`”
:5如果!(*左值==*右值){
^~~~~~~~~~~~~~~~~~~~~~~~~
src/functional.rs:104:5:104:50注:在assert_eq!(在中定义)的扩展中
:5:8:5:33帮助:运行'rustc--explain E0277'查看详细说明
错误:由于上一个错误而中止
无法编译“gettingrusty”。

您的
min
正常(假设您想返回
&i32
),错误在
断言中。
这是正确的:

assert_eq!(&1, min(&input_array));

您的
min
正常(假设您想返回
&i32
),错误在
断言中。
这是正确的:

assert_eq!(&1, min(&input_array));

let()检查
x
的类型=x;
,它的类型很可能是
&i32
,我相信您可以从这里开始。您确定这是错误吗?
min
返回
选项
…我假设您正在展开它,并且没有包含在代码段中?很抱歉,添加了缺少的部分。请使用
let:()检查
x
的类型=x;
,它的类型很可能是
&i32
,我相信您可以从这里开始使用它。您确定这是错误吗?
min
返回
选项
…我假设您正在展开它,但没有将其包含在代码段中?很抱歉,添加了缺少的部分。“1”是什么意思意思是?@lowkiansong It'a reference to the temporary value 1.你的
min
返回一个引用,因此你必须将其与另一个引用进行比较。
&1
是一个引用,它可以工作,
1
本身不是一个
&i32
是一个
i32
,因此它不能编译。另一个可能的修复方法是不返回引用:change
->&i32
->i32
和第二个
x
*x
。什么是“&1”意思是?@lowkiansong It'a reference to the temporary value 1.你的
min
返回一个引用,因此你必须将其与另一个引用进行比较。
&1
是一个引用,它可以工作,
1
本身不是一个
&i32
是一个
i32
,因此它不能编译。另一个可能的修复方法是不返回引用:chan通用电气
->&i32
->i32
,第二个
x
*x