如何在结构中返回向量的切片

How to return slice of a vector in a struct

提问人:julien 提问时间:8/16/2023 最后编辑:mkrieger1julien 更新时间:8/16/2023 访问量:55

问:

我想返回我的向量的一部分,但编译器抱怨 &[Letter] 需要显式生存期。

struct Board {
    board: Vec<Letter>,
    width: usize,
    height: usize,
}

impl std::ops::Index<usize> for Board {
    type Output = &[Letter];

    fn index(&self, index: usize) -> &Self::Output {
        return &&self.board[index * self.width..(index + 1) * self.width];
    }
}

我试图添加一个明确的生存期,但它没有用。

切片

评论


答:

4赞 Chayim Friedman 8/16/2023 #1

您应该使用 ,而不是 。引用已添加到方法中。[Letter]&[Letter]Outputindex()

impl std::ops::Index<usize> for Board {
    type Output = [Letter];

    fn index(&self, index: usize) -> &Self::Output {
        return &self.board[index * self.width..(index + 1) * self.width];
    }
}