use std::sync::Arc; use crate::{component, extensions::Extension, widget::Widget, Screen}; pub struct IdExtension(pub Arc); component!(Id(pub usize)); impl Extension for Arc {} impl IdExtension { pub fn new(screen: Arc) -> Arc { Arc::new(IdExtension(screen)) } pub fn get_element(self: &Arc, id: usize) -> Option> { for elem in self.0.widgets.lock().unwrap().iter() { if let Some(current_id) = elem.get::() { if current_id.0 == id { return Some(elem.clone()); } } } None } }