<NME> output.rs
<BEF> use crate::{
    backend::renderer::{Frame, ImportAll, Renderer, Texture},
    desktop::space::SpaceElement,
    utils::{Logical, Point, Rectangle},
    wayland::output::Output,
};
    cell::{RefCell, RefMut},
    collections::HashMap,
};

#[derive(Clone, Default)]
pub struct OutputState {
    pub location: Point<i32, Logical>,
}

pub type OutputUserdata = RefCell<HashMap<usize, OutputState>>;
pub fn output_state(space: usize, o: &Output) -> RefMut<'_, OutputState> {
    let userdata = o.user_data();
    id: usize,
}

impl<R, F, E, T> From<&dyn SpaceElement<R, F, E, T>> for ToplevelId
where
    R: Renderer<Error = E, TextureId = T, Frame = F> + ImportAll + 'static,
    F: Frame<Error = E, TextureId = T> + 'static,
    E: std::error::Error + 'static,
    T: Texture + 'static,
{
    fn from(elem: &dyn SpaceElement<R, F, E, T>) -> ToplevelId {
        ToplevelId {
            t_id: elem.type_of(),
            id: elem.id(),

<MSG> desktop: Remove `Renderer: 'static` constraint

<DFF> @@ -1,6 +1,6 @@
 use crate::{
-    backend::renderer::{Frame, ImportAll, Renderer, Texture},
-    desktop::space::SpaceElement,
+    backend::renderer::{ImportAll, Renderer},
+    desktop::space::{RenderElement, SpaceElement},
     utils::{Logical, Point, Rectangle},
     wayland::output::Output,
 };
@@ -19,14 +19,13 @@ pub struct ToplevelId {
     id: usize,
 }
 
-impl<R, F, E, T> From<&dyn SpaceElement<R, F, E, T>> for ToplevelId
+impl<'a, R, E> From<&SpaceElement<'a, R, E>> for ToplevelId
 where
-    R: Renderer<Error = E, TextureId = T, Frame = F> + ImportAll + 'static,
-    F: Frame<Error = E, TextureId = T> + 'static,
-    E: std::error::Error + 'static,
-    T: Texture + 'static,
+    R: Renderer + ImportAll,
+    <R as Renderer>::TextureId: 'static,
+    E: RenderElement<R>,
 {
-    fn from(elem: &dyn SpaceElement<R, F, E, T>) -> ToplevelId {
+    fn from(elem: &SpaceElement<'a, R, E>) -> ToplevelId {
         ToplevelId {
             t_id: elem.type_of(),
             id: elem.id(),

desktop: Remove `Renderer: 'static` constraint