senses are now bitflags

This commit is contained in:
2025-08-25 22:36:38 -04:00
parent e9037cdc14
commit 9780724126
7 changed files with 150 additions and 104 deletions

80
Cargo.lock generated
View File

@@ -53,7 +53,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046"
dependencies = [
"android-properties",
"bitflags 2.9.1",
"bitflags 2.9.3",
"cc",
"cesu8",
"jni",
@@ -196,9 +196,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.9.1"
version = "2.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d"
dependencies = [
"serde",
]
@@ -274,7 +274,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"log",
"polling",
"rustix 0.38.44",
@@ -425,7 +425,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"core-foundation 0.10.1",
"libc",
]
@@ -436,7 +436,7 @@ version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"fontdb",
"log",
"rangemap",
@@ -757,7 +757,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"gpu-alloc-types",
]
@@ -767,7 +767,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
]
[[package]]
@@ -788,7 +788,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"gpu-descriptor-types",
"hashbrown",
]
@@ -799,7 +799,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
]
[[package]]
@@ -1018,7 +1018,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"libc",
"redox_syscall 0.5.17",
]
@@ -1106,7 +1106,7 @@ version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block",
"core-graphics-types 0.2.0",
"foreign-types",
@@ -1139,7 +1139,7 @@ checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c"
dependencies = [
"arrayvec",
"bit-set",
"bitflags 2.9.1",
"bitflags 2.9.3",
"cfg-if",
"cfg_aliases",
"codespan-reporting",
@@ -1163,7 +1163,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"jni-sys",
"log",
"ndk-sys",
@@ -1313,7 +1313,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"libc",
"objc2",
@@ -1329,7 +1329,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"objc2",
"objc2-core-location",
@@ -1353,7 +1353,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"objc2",
"objc2-foundation",
@@ -1395,7 +1395,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"dispatch",
"libc",
@@ -1420,7 +1420,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"objc2",
"objc2-foundation",
@@ -1432,7 +1432,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"objc2",
"objc2-foundation",
@@ -1455,7 +1455,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"objc2",
"objc2-cloud-kit",
@@ -1487,7 +1487,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"objc2",
"objc2-core-location",
@@ -1876,7 +1876,7 @@ version = "0.5.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
]
[[package]]
@@ -1909,7 +1909,7 @@ version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"errno",
"libc",
"linux-raw-sys 0.4.15",
@@ -1922,7 +1922,7 @@ version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"errno",
"libc",
"linux-raw-sys 0.9.4",
@@ -1941,7 +1941,7 @@ version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"bytemuck",
"libm",
"smallvec",
@@ -2079,7 +2079,7 @@ version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"calloop",
"calloop-wayland-source",
"cursor-icon",
@@ -2113,7 +2113,7 @@ version = "0.3.0+sdk-1.3.268.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
]
[[package]]
@@ -2551,7 +2551,7 @@ version = "0.31.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"rustix 1.0.8",
"wayland-backend",
"wayland-scanner",
@@ -2563,7 +2563,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"cursor-icon",
"wayland-backend",
]
@@ -2585,7 +2585,7 @@ version = "0.32.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"wayland-backend",
"wayland-client",
"wayland-scanner",
@@ -2597,7 +2597,7 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2610,7 +2610,7 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2673,7 +2673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70b6ff82bbf6e9206828e1a3178e851f8c20f1c9028e74dd3a8090741ccd5798"
dependencies = [
"arrayvec",
"bitflags 2.9.1",
"bitflags 2.9.3",
"cfg-if",
"cfg_aliases",
"document-features",
@@ -2704,7 +2704,7 @@ dependencies = [
"arrayvec",
"bit-set",
"bit-vec",
"bitflags 2.9.1",
"bitflags 2.9.3",
"cfg_aliases",
"document-features",
"hashbrown",
@@ -2763,7 +2763,7 @@ dependencies = [
"arrayvec",
"ash",
"bit-set",
"bitflags 2.9.1",
"bitflags 2.9.3",
"block",
"bytemuck",
"cfg-if",
@@ -2807,7 +2807,7 @@ version = "26.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"bytemuck",
"js-sys",
"log",
@@ -3182,7 +3182,7 @@ dependencies = [
"ahash",
"android-activity",
"atomic-waker",
"bitflags 2.9.1",
"bitflags 2.9.3",
"block2",
"bytemuck",
"calloop",
@@ -3240,7 +3240,7 @@ version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
]
[[package]]
@@ -3287,7 +3287,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
dependencies = [
"bitflags 2.9.1",
"bitflags 2.9.3",
"dlib",
"log",
"once_cell",

1
TODO
View File

@@ -3,4 +3,3 @@ images
text
on update for text widget (then don't need to store textures in active data)
abstract sensors to work with any event, maybe associate data as well?
make current senses orable so you can select multiple

View File

@@ -1,27 +1,27 @@
use crate::prelude::*;
pub trait Sensable<W, Tag> {
fn on(self, sense: Sense, f: impl SenseFn) -> WidgetIdFnRet!(W);
fn on(self, sense: Senses, f: impl SenseFn) -> WidgetIdFnRet!(W);
fn id_on(
self,
sense: Sense,
senses: Senses,
f: impl FnMut(&WidgetId<W>, &mut Ui) + 'static + Clone,
) -> WidgetIdFnRet!(W)
where
W: Widget;
fn edit_on(self, sense: Sense, f: impl FnMut(&mut W) + 'static + Clone) -> WidgetIdFnRet!(W)
fn edit_on(self, senses: Senses, f: impl FnMut(&mut W) + 'static + Clone) -> WidgetIdFnRet!(W)
where
W: Widget;
}
impl<W: WidgetLike<Tag>, Tag> Sensable<W::Widget, Tag> for W {
fn on(self, sense: Sense, f: impl SenseFn) -> WidgetIdFnRet!(W::Widget) {
fn on(self, senses: Senses, f: impl SenseFn) -> WidgetIdFnRet!(W::Widget) {
move |ui| {
let id = self.add(ui);
ui.add_sensor(
&id,
Sensor {
sense,
senses,
f: Box::new(f),
},
);
@@ -30,7 +30,7 @@ impl<W: WidgetLike<Tag>, Tag> Sensable<W::Widget, Tag> for W {
}
fn id_on(
self,
sense: Sense,
senses: Senses,
mut f: impl FnMut(&WidgetId<W::Widget>, &mut Ui) + 'static + Clone,
) -> WidgetIdFnRet!(W::Widget)
where
@@ -38,17 +38,17 @@ impl<W: WidgetLike<Tag>, Tag> Sensable<W::Widget, Tag> for W {
{
self.with_id(move |ui, id| {
let id2 = id.clone();
ui.add(id.on(sense, move |ui| f(&id2, ui)))
ui.add(id.on(senses, move |ui| f(&id2, ui)))
})
}
fn edit_on(
self,
sense: Sense,
senses: Senses,
mut f: impl FnMut(&mut W::Widget) + 'static + Clone,
) -> WidgetIdFnRet!(W::Widget)
where
W::Widget: Widget,
{
self.id_on(sense, move |id, ui| f(&mut ui[id]))
self.id_on(senses, move |id, ui| f(&mut ui[id]))
}
}

View File

@@ -1,19 +1,17 @@
use crate::{
layout::{Ui, UiRegion, Vec2, WidgetId},
util::HashMap,
util::Id,
util::{HashMap, Id, bitflags},
};
#[derive(Clone, Copy, PartialEq)]
pub enum Sense {
PressStart,
Pressing,
PressEnd,
HoverStart,
Hovering,
HoverEnd,
NotHovering,
}
bitflags!(Sense, Senses, senses {
1 << 0; PressStart, PRESS_START,
1 << 1; Pressing, PRESSING,
1 << 2; PressEnd, PRESS_END,
1 << 3; HoverStart, HOVER_START,
1 << 4; Hovering, HOVERING,
1 << 5; HoverEnd, HOVER_END,
1 << 6; NotHovering, NOT_HOVERING,
});
pub struct CursorState {
pub pos: Vec2,
@@ -31,18 +29,13 @@ pub enum ActivationState {
}
pub struct Sensor {
pub sense: Sense,
pub senses: Senses,
pub f: Box<dyn SenseFn>,
}
pub type SensorMap = HashMap<Id, SensorGroup>;
pub type ActiveSensors = HashMap<Id, SenseShape>;
pub type SenseShape = UiRegion;
#[derive(Clone)]
pub struct SenseTrigger {
pub shape: SenseShape,
pub sense: Sense,
}
#[derive(Default)]
pub struct SensorGroup {
pub hover: ActivationState,
@@ -78,7 +71,7 @@ impl Ui {
group.cursor.update(cursor.pressed && in_shape);
for sensor in &mut group.sensors {
if should_run(sensor.sense, group.cursor, group.hover) {
if should_run(sensor.senses, group.cursor, group.hover) {
(sensor.f.box_clone())(self);
}
}
@@ -88,8 +81,9 @@ impl Ui {
}
}
pub fn should_run(sense: Sense, cursor: ActivationState, hover: ActivationState) -> bool {
match sense {
pub fn should_run(senses: Senses, cursor: ActivationState, hover: ActivationState) -> bool {
for sense in senses.iter() {
if match sense {
Sense::PressStart => cursor.is_start(),
Sense::Pressing => cursor.is_on(),
Sense::PressEnd => cursor.is_end(),
@@ -97,8 +91,12 @@ pub fn should_run(sense: Sense, cursor: ActivationState, hover: ActivationState)
Sense::Hovering => hover.is_on(),
Sense::HoverEnd => hover.is_end(),
Sense::NotHovering => hover.is_off(),
} {
return true;
}
}
false
}
impl ActivationState {
pub fn is_start(&self) -> bool {
@@ -147,7 +145,7 @@ impl Clone for SensorGroup {
impl Clone for Sensor {
fn clone(&self) -> Self {
Self {
sense: self.sense,
senses: self.senses,
f: self.f.box_clone(),
}
}

View File

@@ -2,6 +2,7 @@ use std::sync::Arc;
use app::App;
use render::Renderer;
use senses::*;
use ui::prelude::*;
use winit::{event::WindowEvent, event_loop::ActiveEventLoop, window::Window};
@@ -29,22 +30,19 @@ impl Client {
let mut ui = Ui::new();
let rect = Rect {
color: UiColor::WHITE,
color: Color::WHITE,
radius: 20.0,
thickness: 0.0,
inner_radius: 0.0,
};
let pad_test = ui.add_static(
(
rect.color(UiColor::BLUE),
rect.color(Color::BLUE),
(
rect.color(UiColor::RED).center((100.0, 100.0)),
(
rect.color(UiColor::ORANGE),
rect.color(UiColor::LIME).pad(10.0),
)
rect.color(Color::RED).center((100.0, 100.0)),
(rect.color(Color::ORANGE), rect.color(Color::LIME).pad(10.0))
.span(Dir::RIGHT, [1, 1]),
rect.color(UiColor::YELLOW),
rect.color(Color::YELLOW),
)
.span(Dir::RIGHT, [2, 2, 1])
.pad(10),
@@ -53,12 +51,12 @@ impl Client {
);
let span_test = ui.add_static(
(
rect.color(UiColor::GREEN),
rect.color(UiColor::ORANGE),
rect.color(UiColor::CYAN),
rect.color(UiColor::BLUE),
rect.color(UiColor::MAGENTA),
rect.color(UiColor::RED),
rect.color(Color::GREEN),
rect.color(Color::ORANGE),
rect.color(Color::CYAN),
rect.color(Color::BLUE),
rect.color(Color::MAGENTA),
rect.color(Color::RED),
)
.span(
Dir::LEFT,
@@ -77,17 +75,14 @@ impl Client {
let switch_button = |color, to, label| {
let rect = Rect::new(color)
.id_on(Sense::PressStart, move |id, ui| {
.id_on(PRESS_START, move |id, ui| {
ui[main].inner.set_static(to);
ui[id].color = color.add_rgb(-0.2);
})
.edit_on(Sense::HoverStart, move |r| {
.edit_on(HOVER_START | PRESS_END, move |r| {
r.color = color.add_rgb(0.4);
})
.edit_on(Sense::PressEnd, move |r| {
r.color = color.add_rgb(0.4);
})
.edit_on(Sense::HoverEnd, move |r| {
.edit_on(HOVER_END, move |r| {
r.color = color;
});
(rect, text(label).size(30)).stack()
@@ -95,15 +90,15 @@ impl Client {
let tabs = ui.add(
(
switch_button(UiColor::RED, pad_test, "pad test"),
switch_button(UiColor::GREEN, span_test, "span test"),
switch_button(UiColor::BLUE, span_add, "span add test"),
switch_button(Color::RED, pad_test, "pad test"),
switch_button(Color::GREEN, span_test, "span test"),
switch_button(Color::BLUE, span_add, "span add test"),
)
.span(Dir::RIGHT, [1, 1, 1]),
);
let add_button = Rect::new(Color::LIME)
.radius(30)
.on(Sense::PressStart, move |ui| {
.on(PRESS_START, move |ui| {
let child = ui
.add(image(include_bytes!("assets/sungals.png")))
.erase_type();
@@ -117,7 +112,7 @@ impl Client {
let del_button = Rect::new(Color::RED)
.radius(30)
.on(Sense::PressStart, move |ui| {
.on(PRESS_START, move |ui| {
ui[span_add].children.pop();
})
.region(

52
src/util/bitflags.rs Normal file
View File

@@ -0,0 +1,52 @@
macro_rules! bitflags {
($enum:ident, $struct:ident, $mod:ident {$($val:expr; $ename:ident, $sname:ident,)*}) => {
#[repr(u32)]
#[derive(Clone, Copy, PartialEq)]
pub enum $enum {
$($ename = $val,)*
}
#[derive(Clone, Copy, PartialEq)]
pub struct $struct(u32);
#[allow(non_upper_case_globals)]
impl $struct {
$(pub const $sname: Self = Self($enum::$ename as u32);)*
pub fn iter(&self) -> impl Iterator<Item = $enum> {
$crate::util::Biterator::new(self.0).map(|v| unsafe {std::mem::transmute(v)})
}
}
impl std::ops::BitOr for $struct {
type Output = Self;
fn bitor(self, rhs: $struct) -> Self {
Self(self.0 | rhs.0)
}
}
pub mod $mod {
use super::*;
$(pub const $sname: $struct = $struct::$sname;)*
}
};
}
pub(crate) use bitflags;
pub struct Biterator(u32);
impl Iterator for Biterator {
type Item = u32;
fn next(&mut self) -> Option<Self::Item> {
if self.0 == 0 {
return None;
}
let val = 1 << self.0.trailing_zeros();
self.0 &= !val;
Some(val)
}
}
impl Biterator {
pub fn new(val: u32) -> Self {
Self(val)
}
}

View File

@@ -1,10 +1,12 @@
mod id;
mod math;
mod refcount;
mod bitflags;
pub(crate) use id::*;
pub(crate) use math::*;
pub(crate) use refcount::*;
pub(crate) use bitflags::*;
pub type HashMap<K, V> = std::collections::HashMap<K, V>;
pub type HashSet<K> = std::collections::HashSet<K>;