我想返回向量的一部分,但编译器抱怨&[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];
    }
}

我曾try 添加一个明确的生存期,但没有奏效.

推荐答案

Output应该使用[Letter],而不是&[Letter].该引用已添加到index()方法中.

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];
    }
}

Rust相关问答推荐

在rust中如何修改一个盒装函数并将其赋回?

如何从接收&;self的方法克隆RC

无法在线程之间安全地发送future (&Q;)&错误

如何处理动态 struct 实例化?

定义采用更高级类型泛型的性状

如何编写一个以一个闭包为参数的函数,该函数以另一个闭包为参数?

创建Rust中元对象协议的动态对象 Select /重新分配机制

Rust&;Tokio:如何处理更多的信号,而不仅仅是SIGINT,即SIGQUE?

如何使用Actix Web for Rust高效地为大文件服务

`use` 和 `crate` 关键字在 Rust 项目中效果不佳

如何从borrow 的异步代码运行阻塞代码?

Rust 中的内存管理

Google chrome 和 Apple M1 中的计算着色器

返回迭代器的特征

为什么 Rust 允许写入不可变的 RwLock?

在 FFI 的上下文中,未初始化是什么意思?

为什么 Rust 编译器在移动不可变值时执行复制?

Rustlings 切片原语

如何为返回正确类型的枚举实现 get 方法?

为什么可以从闭包中返回私有 struct