gpt4 book ai didi

enums - Rust Enum的问题

转载 作者:行者123 更新时间:2023-12-03 11:43:39 24 4
gpt4 key购买 nike

我似乎无法使我的匹配表达式正常工作。看着它,似乎和我看过的其他例子一样。

fn draw(board: BoardType) {
let board = match board{
BoardType::B3x3(board, _) => board,
BoardType::B4x4(board, _) => board
};
}

#[derive(Debug)]
enum BoardType {
B3x3([[Space; 3]; 3], (i8, i8)),
B4x4([[Space; 4]; 4], (i8, i8)),
}

#[derive(Copy, Clone, Debug)]
enum Space {
Blank,
X,
O,
Blocked,
}

BoardType::B4x4(board,_) => board
^^^^^ expected an array with a fixed size of 3 elements, found one with 4 elements

我真的不明白为什么这行不通。

最佳答案

match表达式返回一个值。即使在此代码中未使用该值,编译器也需要对表达式进行类型检查。但是,表达式的两个分支具有不同的类型:分别为[[Space; 3]; 3][[Space; 4]; 4]

错误消息告诉您,它期望第二个分支具有与第一个相同的类型。

问题的一部分可能是您的代码太简单了,实际上什么也没做。假设您具有绘制这些板的功能:

fn draw_3x3(board: [[Space; 3]; 3]) {
unimplemented!()
}

fn draw_4x4(board: [[Space; 4]; 4]) {
unimplemented!()
}

然后,当您使用它们时,两个分支将具有相同的类型( ()),因此整个表达式将进行类型检查:
fn draw(board: BoardType) {
let board = match board{
BoardType::B3x3(board, _) => draw_3x3(board),
BoardType::B4x4(board, _) => draw_4x4(board),
};
}

关于enums - Rust Enum的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59693393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com