Title: Hands-On Rust (Chapter 10)
This has been bugging me a bit since coding it, so I tried the change and it seems to work.
Isn’t it a bit expensive to clone a HashSet that you intend to immediately replace?
I tried the following change to clone_dirty(&self) -> Self
pub fn clone_dirty(&self) -> Self {
// let mut cloned = self.clone(); // TODO: isn't this expensive??
// cloned.is_dirty = true;
// cloned
Self {
visible_tiles: HashSet::new(),
radius: self.radius,
is_dirty: true,
}
}
Game play seems to be working fine so far. I’m assuming that creating a new HashSet is less expensive than closing a populated HashSet. That also raised the question for me as to whether visible_tiles should be Option instead and the None would serve the same purpose as is_dirty. Maybe I’ll see that this is a bad idea as I progress…