Как включить sdl2

Я хочу использовать пакет sdl2 в Rust.

Папка моего проекта:

├── Cargo.toml
├── src
    ├── keyboard.rs
    └── main.rs

На данный момент я сделал следующее: Добавил строку sdl2 в свой Cargo, где обрабатываются внешние зависимости: Cargo.toml:

// ...
[dependencies]
    sdl2 = "0.31"

Чтобы использовать sdl2 в моем keyboard.rs, я добавил следующие строки:

extern crate sdl2;
use sdl2::keyboard::Keycode;

Но когда я пытаюсь скомпилировать (cargo build), я получаю следующую ошибку:

error[E0433]: failed to resolve. Did you mean `keyboard::sdl2`?
 --> src/keyboard.rs:4:5
  |
4 | use sdl2::keyboard::Keycode;
  |     ^^^^ Did you mean `keyboard::sdl2`?

error[E0433]: failed to resolve. Did you mean `keyboard::sdl2`?

Что я делаю не так? Можно ли вообще загружать внешние ящики в другие файлы, кроме файла main.rs?

изменить 1:

Добавление extern crate sdl2; к моему main.rs не решило проблему


person KuSpa    schedule 28.04.2018    source источник
comment
Вам нужно добавить extern crate sd12 в ваш main.rs. Все внешние зависимости должны быть связаны на верхнем уровне.   -  person Peter Hall    schedule 28.04.2018
comment
ошибка все еще возникает   -  person KuSpa    schedule 28.04.2018
comment
Я не могу воспроизвести вашу проблему :/ Вам нужно предоставить нам больше информации: как вы компилируете? Простой cargo build или что-то еще? Также: какую версию Rust (rustc -V) вы используете? И, пожалуйста, предоставьте нам полное содержание main.rs (по крайней мере, все части, необходимые для воспроизведения проблемы).   -  person Lukas Kalbertodt    schedule 28.04.2018


Ответы (1)


Как указано выше, мне нужно объявить внешние зависимости в корне. При использовании файла lib.rs там должно быть написано:

lib.rs:

extern crate sdl2;
//...

чтобы использовать его в файле keyboard.rs:

use sdl2::keyboard::Scancode;
use sdl2;
// example code below
fn is_a_pressed(e: &sdl2::EventPump) -> bool {
    e.keyboard_state().is_scancode_pressed(Scancode::A)
}
person KuSpa    schedule 28.04.2018
comment
Вам не нужны как библиотека, так и основной файл. Это может быть вашей проблемой. - person Peter Hall; 28.04.2018
comment
Не могли бы вы объяснить вашу проблему и ваше решение более подробно? В своем нынешнем виде эти вопросы и ответы вряд ли помогут любому будущему посетителю. Нам это не нравится здесь, на SO (наша миссия заключается в создании базы знаний для будущих посетителей). Отредактировав свой вопрос и ответ, вы могли бы улучшить эту ситуацию и вернуть знания сообществу. - person Lukas Kalbertodt; 28.04.2018