pub trait ObjectData: DowncastSync {
    // Required methods
    fn event(
        self: Arc<Self>,
        backend: &Backend,
        msg: Message<ObjectId, OwnedFd>
    ) -> Option<Arc<dyn ObjectData>>;
    fn destroyed(&self, object_id: ObjectId);

    // Provided methods
    fn debug(&self, f: &mut Formatter<'_>) -> Result { ... }
    fn data_as_any(&self) -> &dyn Any { ... }
}
Available on (crate features client_system or server_system) and crate feature client_system only.
Expand description

A trait representing your data associated to an object

You will only be given access to it as a & reference, so you need to handle interior mutability by yourself.

The methods of this trait will be invoked internally every time a new object is created to initialize its data.

Required Methods§

source

fn event( self: Arc<Self>, backend: &Backend, msg: Message<ObjectId, OwnedFd> ) -> Option<Arc<dyn ObjectData>>

Dispatch an event for the associated object

If the event has a NewId argument, the callback must return the object data for the newly created object

source

fn destroyed(&self, object_id: ObjectId)

Notification that the object has been destroyed and is no longer active

Provided Methods§

source

fn debug(&self, f: &mut Formatter<'_>) -> Result

Helper for forwarding a Debug implementation of your ObjectData type

By default will just print ObjectData { ... }

source

fn data_as_any(&self) -> &dyn Any

Helper for accessing user data

This function is used to back the Proxy::data function in wayland_client. By default, it returns self (via Downcast), but this may be overridden to allow downcasting user data without needing to have access to the full type.

Implementations§

source§

impl dyn ObjectData

source

pub fn is<__T: ObjectData>(&self) -> bool

Returns true if the trait object wraps an object of type __T.

source

pub fn downcast<__T: ObjectData>(self: Box<Self>) -> Result<Box<__T>, Box<Self>>

Returns a boxed object from a boxed trait object if the underlying object is of type __T. Returns the original boxed trait if it isn’t.

source

pub fn downcast_rc<__T: ObjectData>(self: Rc<Self>) -> Result<Rc<__T>, Rc<Self>>

Returns an Rc-ed object from an Rc-ed trait object if the underlying object is of type __T. Returns the original Rc-ed trait if it isn’t.

source

pub fn downcast_ref<__T: ObjectData>(&self) -> Option<&__T>

Returns a reference to the object within the trait object if it is of type __T, or None if it isn’t.

source

pub fn downcast_mut<__T: ObjectData>(&mut self) -> Option<&mut __T>

Returns a mutable reference to the object within the trait object if it is of type __T, or None if it isn’t.

source

pub fn downcast_arc<__T>(self: Arc<Self>) -> Result<Arc<__T>, Arc<Self>>where __T: Any + Send + Sync + ObjectData,

Returns an Arc-ed object from an Arc-ed trait object if the underlying object is of type __T. Returns the original Arc-ed trait if it isn’t.

Trait Implementations§

source§

impl Debug for dyn ObjectData

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Implementors§