我觉得我的实现太麻烦了,我想有更好的方法来实现这个简单的东西。
我有一个Grid
表示游戏板的结构,我有一个将单元格添加到网格中的方法,此方法 ( add_cell
) 在添加之前检查网格中是否已存在单元格。
struct Cell {
// A simplified version with only one coordinate
position: i8,
}
struct Grid {
// List of cells in the grid
cells: Vec<Rc<Cell>>,
}
impl Grid {
// Add a cell in to the grid
pub fn add_cell(&mut self, cell: Cell) {
let is_not_yet_in;
{
if self.cells.iter().find(|&c| c.position == cell.position).is_some() {
is_not_yet_in = false;
} else {
is_not_yet_in = true;
}
}
if is_not_yet_in {
self.cells.push(Rc::new(cell).clone());
}
}
}
我在声明之后放置了假范围,is_not_yet_in
以避免在可变/不可变借用self.cells
. 无论如何,我认为这个技巧可以避免使用不同的方法。