amethyst / amethyst/rustrogueliketutorial
Chapter 07 - Damage get_available_exits() function errors
- Dominant language
- Rust
- Stars
- 970
- Forks
- 166
- PR merge metrics
- No merged PRs in 30d
Description
Hello,
I am working through the tutorial you have online for Rust and Rltk. I am on Chapter 07 - Damage and was hitting an error when you had us add
```
fn get_available_exits(&self, idx:usize) -> Vec<(usize, f32)> {
let mut exits : Vec<(usize, f32)> = Vec::new();
let x = idx as i32 % self.width;
let y = idx as i32 / self.width;
let w = self.width as usize;
// Cardinal directions
if self.is_exit_valid(x-1, y) { exits.push((idx-1, 1.0)) };
if self.is_exit_valid(x+1, y) { exits.push((idx+1, 1.0)) };
if self.is_exit_valid(x, y-1) { exits.push((idx-w, 1.0)) };
if self.is_exit_valid(x, y+1) { exits.push((idx+w, 1.0)) };
// Diagonals
if self.is_exit_valid(x-1, y-1) { exits.push(((idx-w)-1, 1.45)); }
if self.is_exit_valid(x+1, y-1) { exits.push(((idx-w)+1, 1.45)); }
if self.is_exit_valid(x-1, y+1) { exits.push(((idx+w)-1, 1.45)); }
if self.is_exit_valid(x+1, y+1) { exits.push(((idx+w)+1, 1.45)); }
exits
}
```
To the BaseMap impl. The error I was receiving was:
```
error[E0053]: method `get_available_exits` has an incompatible type for trait
--> src/map.rs:117:5
|
117 | fn get_available_exits(&self, idx:usize) -> Vec<(usize, f32)> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `smallvec::SmallVec`, found struct `std::vec::Vec`
|
= note: expected fn pointer `fn(&map::Map, _) -> smallvec::SmallVec<[(usize, f32); 10]>`
found fn pointer `fn(&map::Map, _) -> std::vec::Vec<(usize, f32)>`
```
After looking over the source code you provide I found that instead of using Vec like you have in the tutorial you used rltk::SmallVec. After changing my code to use rltk::SmallVec the error went away and I was getting the expected monster behavior.
Just wanted to bring this up in case others have hit this issue.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.