refactor project structure (start of redoing atomic branch without atomics)

This commit is contained in:
iris committed 2025-12-11 05:25:58 -05:00
1 parent 38266debb6
commit 2dc5b0f62c
76 files changed
+540 -442

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
use crate::layout::{Ui, WidgetId, WidgetIdFn, WidgetLike};
pub trait WidgetAttr<W> {
type Input;
fn run(ui: &mut Ui, id: &WidgetId<W>, input: Self::Input);
}
pub trait Attrable<W, Tag> {
fn attr<A: WidgetAttr<W>>(self, input: A::Input) -> impl WidgetIdFn<W>;
}
impl<WL: WidgetLike<Tag>, Tag> Attrable<WL::Widget, Tag> for WL {
fn attr<A: WidgetAttr<WL::Widget>>(self, input: A::Input) -> impl WidgetIdFn<WL::Widget> {
|ui| {
let id = self.add(ui);
A::run(ui, &id, input);
id
}
}
}