amethyst / amethyst/rustrogueliketutorial
Chapter 07 - Damage get_available_exits() function errors
- Lenguaje dominante
- Rust
- Estrellas
- 970
- Forks
- 166
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
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.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Evaluación
Este issue todavía no se ha evaluado.