use std::any::TypeId; use crate::{Widget, util::HashSet}; pub struct WidgetData { pub widget: Box>, pub label: String, pub event_mgrs: HashSet, /// dynamic borrow checking pub borrowed: bool, } impl WidgetData { pub fn new>(widget: W) -> Self { let mut label = std::any::type_name::().to_string(); if let (Some(first), Some(last)) = (label.find(":"), label.rfind(":")) { label = label.split_at(first).0.to_string() + "::" + label.split_at(last + 1).1; } Self { widget: Box::new(widget), label, borrowed: false, event_mgrs: Default::default(), } } }