首页 > 解决方案 > Rust:泛型参数可以有引用其他参数的界限吗?

问题描述

我想创建一个函数,它接受两个可比较类型的数组并按字典顺序比较它们,就像这样

use std::cmp::Eq;

fn compare_arrays<T : Eq<U>, U>(a1: &[T], a2: &[U]) -> bool {
    //Comparison code here
    return false
}

但是,Rust 编译器不接受T : Eq<U>. 是否有其他语法可以做到这一点,以便我可以在函数签名中指出T和的可比性?U

标签: genericsrust

解决方案


是的,类型约束可以使用其他类型参数。您看到的错误是因为is not genericEq

error[E0107]: wrong number of type arguments: expected 0, found 1
 --> src/lib.rs:3:26
  |
3 | fn compare_arrays<T : Eq<U>, U>(a1: &[T], a2: &[U]) -> bool {
  |                          ^ unexpected type argument

改为使用PartialEq


推荐阅读