use std::marker::Unsize; use crate::{IdLike, WeakWidget, Widget}; pub trait WidgetView { type Widget: Widget + ?Sized + Unsize; fn root(&self) -> WeakWidget; } pub trait HasWidget { type Widget: Widget + ?Sized + Unsize; } impl + ?Sized> HasWidget for WeakWidget { type Widget = W; } impl IdLike for WV { type Widget = WV::Widget; fn id(&self) -> super::WidgetId { self.root().id } }