use std::any::Any; use view::{View, ViewWrapper, Selector}; /// Wrapper view that allows to select its content with a fixed string id. pub struct IdView { view: T, id: String, } impl IdView { /// Wraps the given view. It will be selectable with the given id. pub fn new(id: &str, view: T) -> Self { IdView { view: view, id: id.to_string(), } } } impl ViewWrapper for IdView { wrap_impl!(&self.view); fn wrap_find(&mut self, selector: &Selector) -> Option<&mut Any> { println!(" ID VIEWING "); match selector { &Selector::Id(id) if id == self.id => Some(&mut self.view), s => self.view.find(s), } } }