Trait Proxy
pub trait Proxy:
Sized
+ Clone
+ Debug {
type Event;
type Request<'a>;
Show 14 methods
// Required methods
fn interface() -> &'static Interface;
fn id(&self) -> ObjectId;
fn version(&self) -> u32;
fn data<U>(&self) -> Option<&U>
where U: Send + Sync + 'static;
fn object_data(&self) -> Option<&Arc<dyn ObjectData>>;
fn backend(&self) -> &WeakBackend;
fn from_id(conn: &Connection, id: ObjectId) -> Result<Self, InvalidId>;
fn inert(backend: WeakBackend) -> Self;
fn send_request(&self, req: Self::Request<'_>) -> Result<(), InvalidId>;
fn send_constructor<I>(
&self,
req: Self::Request<'_>,
data: Arc<dyn ObjectData>,
) -> Result<I, InvalidId>
where I: Proxy;
fn parse_event(
conn: &Connection,
msg: Message<ObjectId, OwnedFd>,
) -> Result<(Self, Self::Event), DispatchError>;
fn write_request<'a>(
&self,
conn: &Connection,
req: Self::Request<'a>,
) -> Result<(Message<ObjectId, BorrowedFd<'a>>, Option<(&'static Interface, u32)>), InvalidId>;
// Provided methods
fn is_alive(&self) -> bool { ... }
fn downgrade(&self) -> Weak<Self> { ... }
}wayland and Linux only.Expand description
Trait representing a Wayland interface
Required Associated Types§
Required Methods§
fn object_data(&self) -> Option<&Arc<dyn ObjectData>>
fn object_data(&self) -> Option<&Arc<dyn ObjectData>>
Access the raw data associated with this object.
For objects created using the scanner-generated methods, this will be an instance of the
QueueProxyData type.
fn backend(&self) -> &WeakBackend
fn backend(&self) -> &WeakBackend
Access the backend associated with this object
fn from_id(conn: &Connection, id: ObjectId) -> Result<Self, InvalidId>
fn from_id(conn: &Connection, id: ObjectId) -> Result<Self, InvalidId>
Create an object proxy from its ID
Returns an error this the provided object ID does not correspond to
the Self interface.
Note: This method is mostly meant as an implementation detail to be used by code generated by wayland-scanner.
fn inert(backend: WeakBackend) -> Self
fn inert(backend: WeakBackend) -> Self
Create an inert object proxy
Note: This method is mostly meant as an implementation detail to be used by code generated by wayland-scanner.
fn send_request(&self, req: Self::Request<'_>) -> Result<(), InvalidId>
fn send_request(&self, req: Self::Request<'_>) -> Result<(), InvalidId>
Send a request for this object.
It is an error to use this function on requests that create objects; use
send_constructor() for such requests.
fn send_constructor<I>(
&self,
req: Self::Request<'_>,
data: Arc<dyn ObjectData>,
) -> Result<I, InvalidId>where
I: Proxy,
fn send_constructor<I>(
&self,
req: Self::Request<'_>,
data: Arc<dyn ObjectData>,
) -> Result<I, InvalidId>where
I: Proxy,
Send a request for this object that creates another object.
It is an error to use this function on requests that do not create objects; use
send_request() for such requests.
fn parse_event(
conn: &Connection,
msg: Message<ObjectId, OwnedFd>,
) -> Result<(Self, Self::Event), DispatchError>
fn parse_event( conn: &Connection, msg: Message<ObjectId, OwnedFd>, ) -> Result<(Self, Self::Event), DispatchError>
Parse a event for this object
Note: This method is mostly meant as an implementation detail to be used by code generated by wayland-scanner.
fn write_request<'a>(
&self,
conn: &Connection,
req: Self::Request<'a>,
) -> Result<(Message<ObjectId, BorrowedFd<'a>>, Option<(&'static Interface, u32)>), InvalidId>
fn write_request<'a>( &self, conn: &Connection, req: Self::Request<'a>, ) -> Result<(Message<ObjectId, BorrowedFd<'a>>, Option<(&'static Interface, u32)>), InvalidId>
Serialize a request for this object
Note: This method is mostly meant as an implementation detail to be used by code generated by wayland-scanner.
Provided Methods§
fn downgrade(&self) -> Weak<Self>
fn downgrade(&self) -> Weak<Self>
Creates a weak handle to this object
This weak handle will not keep the user-data associated with the object alive,
and can be converted back to a full proxy using Weak::upgrade().
This can be of use if you need to store proxies in the used data of other objects and want to be sure to avoid reference cycles that would cause memory leaks.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.