小编Blu*_*ing的帖子

返回 Rust 中枚举变体的引用是个好主意吗?

我正在 Rust 中制作一个 Tic-Tac-Toe 游戏作为初学者项目,当我遇到这个问题时,我正在计算游戏的状态(获胜、平局等)。我首先写了下面的代码:

fn status(&self) -> Status {
    if Board::has_won(self.x_board) {
        Status::Won(true)
    } else if Board::has_won(self.o_board) {
        Status::Won(false)
    } else if self.is_full() {
        Status::Draw
    } else {
        Status::None
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我修改它以返回引用:

fn status(&self) -> &Status {
    if Board::has_won(self.x_board) {
        &Status::Won(true)
    } else if Board::has_won(self.o_board) {
        &Status::Won(false)
    } else if self.is_full() {
        &Status::Draw
    } else {
        &Status::None
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样做是为了将 self 的生命周期和返回值链接在一起,因此如果板的状态发生更改,则无法再使用对状态的引用。

然后我尝试了这段代码:

fn status(&self) -> &Status {
    let status;
    if Board::has_won(self.x_board) {
        status = Status::Won(true)
    } else if …
Run Code Online (Sandbox Code Playgroud)

rust

5
推荐指数
1
解决办法
93
查看次数

标签 统计

rust ×1