Skip to content

Panic when iterating over keyboard states #1501

@MoonCubes

Description

@MoonCubes

Since Rust 1.90.0, when iterating over a ScancodeIterator the program panics.

let raw_key_states = event_pump
    .keyboard_state()
    .scancodes().collect::<Vec<_>>();

results in:

thread 'main' panicked at /home/ole/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.37.0/src/sdl2/keyboard/scancode.rs:261:29:
trying to construct an enum from an invalid value 0x1
stack backtrace:
   0: __rustc::rust_begin_unwind
             at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/std/src/panicking.rs:697:5
   1: core::panicking::panic_nounwind_fmt::runtime
             at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/panicking.rs:117:22
   2: core::panicking::panic_nounwind_fmt
             at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/intrinsics/mod.rs:2367:9
   3: core::panicking::panic_invalid_enum_construction
             at /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/panicking.rs:327:5
   4: sdl2::keyboard::scancode::Scancode::from_i32
             at /home/ole/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.37.0/src/sdl2/keyboard/scancode.rs:261:29
   5: <sdl2::keyboard::ScancodeIterator as core::iter::traits::iterator::Iterator>::next
             at /home/ole/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.37.0/src/sdl2/keyboard/mod.rs:123:37
   6: <sdl2::keyboard::ScancodeIterator as core::iter::traits::iterator::Iterator>::next
             at /home/ole/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/sdl2-0.37.0/src/sdl2/keyboard/mod.rs:128:22
   7: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter
             at /home/ole/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter_nested.rs:25:41
   8: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
             at /home/ole/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/spec_from_iter.rs:34:9
   9: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
             at /home/ole/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:3633:9
  10: core::iter::traits::iterator::Iterator::collect
             at /home/ole/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:2027:9
  11: regine::engine::Regine::step
             at ./src/engine/mod.rs:156:26
  12: regine::engine::Regine::run
             at ./src/engine/mod.rs:96:18
  13: test3d::main
             at ./examples/test3d/main.rs:39:12
  14: core::ops::function::FnOnce::call_once
             at /home/ole/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:253:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread caused non-unwinding panic. aborting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions