Split `Key` into clear categories, like `Named`, `Dead`, Character`, `Unidentified` removing the `#[non_exhaustive]` from the `Key` itself. Similar action was done for the `KeyCode`. Fixes: #2995 Co-authored-by: Kirill Chibisov <contact@kchibisov.com>
40 lines
1 KiB
Rust
40 lines
1 KiB
Rust
#![cfg(feature = "serde")]
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
use winit::{
|
|
dpi::{LogicalPosition, LogicalSize, PhysicalPosition, PhysicalSize},
|
|
event::{ElementState, MouseButton, MouseScrollDelta, TouchPhase},
|
|
keyboard::{Key, KeyCode, KeyLocation, ModifiersState, NamedKey, PhysicalKey},
|
|
window::CursorIcon,
|
|
};
|
|
|
|
#[allow(dead_code)]
|
|
fn needs_serde<S: Serialize + Deserialize<'static>>() {}
|
|
|
|
#[test]
|
|
fn window_serde() {
|
|
needs_serde::<CursorIcon>();
|
|
}
|
|
|
|
#[test]
|
|
fn events_serde() {
|
|
needs_serde::<TouchPhase>();
|
|
needs_serde::<ElementState>();
|
|
needs_serde::<MouseButton>();
|
|
needs_serde::<MouseScrollDelta>();
|
|
needs_serde::<Key>();
|
|
needs_serde::<NamedKey>();
|
|
needs_serde::<KeyCode>();
|
|
needs_serde::<PhysicalKey>();
|
|
needs_serde::<KeyLocation>();
|
|
needs_serde::<ModifiersState>();
|
|
}
|
|
|
|
#[test]
|
|
fn dpi_serde() {
|
|
needs_serde::<LogicalPosition<f64>>();
|
|
needs_serde::<PhysicalPosition<i32>>();
|
|
needs_serde::<PhysicalPosition<f64>>();
|
|
needs_serde::<LogicalSize<f64>>();
|
|
needs_serde::<PhysicalSize<u32>>();
|
|
}
|