Struct raw_window_handle::WindowHandle
source · pub struct WindowHandle<'a> {
raw: RawWindowHandle,
_marker: PhantomData<&'a ()>,
}
Expand description
The handle to a window.
This is the primary return type of the HasWindowHandle
trait. All pointers within this type
are guaranteed to be valid and not dangling for the lifetime of the handle. This excludes window IDs
like XIDs and the window ID for web platforms. See the documentation on the HasWindowHandle
trait for more information about these safety requirements.
This handle is guaranteed to be safe and valid.
Fields§
§raw: RawWindowHandle
§_marker: PhantomData<&'a ()>
Implementations§
source§impl<'a> WindowHandle<'a>
impl<'a> WindowHandle<'a>
sourcepub unsafe fn borrow_raw(raw: RawWindowHandle) -> Self
pub unsafe fn borrow_raw(raw: RawWindowHandle) -> Self
Borrow a WindowHandle
from a RawWindowHandle
.
§Safety
Users can safely assume that non-null
/0
fields are valid handles, and it is up to the
implementer of this trait to ensure that condition is upheld.
Despite that qualification, implementers should still make a best-effort attempt to fill in all available fields. If an implementation doesn’t, and a downstream user needs the field, it should try to derive the field from other fields the implementer does provide via whatever methods the platform provides.
Note that this guarantee only applies to pointers, and not any window ID types in the handle. This includes Window IDs (XIDs) from X11 and the window ID for web platforms. There is no way for Rust to enforce any kind of invariant on these types, since:
- For all three listed platforms, it is possible for safe code in the same process to delete the window.
- For X11, it is possible for code in a different process to delete the window. In fact, it is possible for code on a different machine to delete the window.
It is also possible for the window to be replaced with another, valid-but-different window. User code should be aware of this possibility, and should be ready to soundly handle the possible error conditions that can arise from this.
sourcepub fn as_raw(&self) -> RawWindowHandle
pub fn as_raw(&self) -> RawWindowHandle
Get the underlying raw window handle.
Trait Implementations§
source§impl AsRef<RawWindowHandle> for WindowHandle<'_>
impl AsRef<RawWindowHandle> for WindowHandle<'_>
source§fn as_ref(&self) -> &RawWindowHandle
fn as_ref(&self) -> &RawWindowHandle
source§impl Borrow<RawWindowHandle> for WindowHandle<'_>
impl Borrow<RawWindowHandle> for WindowHandle<'_>
source§fn borrow(&self) -> &RawWindowHandle
fn borrow(&self) -> &RawWindowHandle
source§impl<'a> Clone for WindowHandle<'a>
impl<'a> Clone for WindowHandle<'a>
source§fn clone(&self) -> WindowHandle<'a>
fn clone(&self) -> WindowHandle<'a>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for WindowHandle<'_>
impl Debug for WindowHandle<'_>
source§impl From<WindowHandle<'_>> for RawWindowHandle
impl From<WindowHandle<'_>> for RawWindowHandle
source§fn from(handle: WindowHandle<'_>) -> Self
fn from(handle: WindowHandle<'_>) -> Self
source§impl HasWindowHandle for WindowHandle<'_>
impl HasWindowHandle for WindowHandle<'_>
source§fn window_handle(&self) -> Result<Self, HandleError>
fn window_handle(&self) -> Result<Self, HandleError>
source§impl<'a> Hash for WindowHandle<'a>
impl<'a> Hash for WindowHandle<'a>
source§impl<'a> PartialEq for WindowHandle<'a>
impl<'a> PartialEq for WindowHandle<'a>
impl<'a> Copy for WindowHandle<'a>
impl<'a> Eq for WindowHandle<'a>
impl<'a> StructuralPartialEq for WindowHandle<'a>
Auto Trait Implementations§
impl<'a> Freeze for WindowHandle<'a>
impl<'a> RefUnwindSafe for WindowHandle<'a>
impl<'a> !Send for WindowHandle<'a>
impl<'a> !Sync for WindowHandle<'a>
impl<'a> Unpin for WindowHandle<'a>
impl<'a> UnwindSafe for WindowHandle<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> HasRawWindowHandle for Twhere
T: HasWindowHandle + ?Sized,
impl<T> HasRawWindowHandle for Twhere
T: HasWindowHandle + ?Sized,
source§fn raw_window_handle(&self) -> Result<RawWindowHandle, HandleError>
fn raw_window_handle(&self) -> Result<RawWindowHandle, HandleError>
HasWindowHandle
instead