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),
};
}