我正在努力,非常不成功地玩切片.
我把我的第一个问题减少到:
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)
但是,编译器给我一个错误:
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`
我将其解释为意味着item类型与函数的返回类型不匹配(我item仅为调试目的引入,从返回中拆分表达式求值).
如果我将返回类型切换为T,这是类型item,我得到另一个错误消息:
Run Code Online (Sandbox Code Playgroud)error[E0508]: …
rust ×1