相关疑难解决方法(0)

索引操作的返回类型是什么?

我正在努力,非常不成功地玩切片.

我把我的第一个问题减少到:

fn at<'a, T>(slice: &'a [T], index: usize) -> &'a T {
    let item = slice[index];
    item
}
Run Code Online (Sandbox Code Playgroud)

slice[index]根据文档,我希望返回类型是一个参考:

pub trait Index<Index> {
    type Output;
    fn index(&'a self, index: &Index) -> &'a <Self as Index<Index>>::Output;
//                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
Run Code Online (Sandbox Code Playgroud)

但是,编译器给我一个错误:

error[E0308]: mismatched types
 --> src/main.rs:3:5
  |
3 |     item
  |     ^^^^ expected reference, found type parameter
  |
  = note: expected type `&'a T`
             found type `T`
Run Code Online (Sandbox Code Playgroud)

我将其解释为意味着item类型与函数的返回类型不匹配(我item仅为调试目的引入,从返回中拆分表达式求值).

如果我将返回类型切换为T,这是类型item,我得到另一个错误消息:

error[E0508]: …
Run Code Online (Sandbox Code Playgroud)

rust

11
推荐指数
2
解决办法
961
查看次数

标签 统计

rust ×1