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>

source

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.

source

pub fn as_raw(&self) -> RawWindowHandle

Get the underlying raw window handle.

Trait Implementations§

source§

impl AsRef<RawWindowHandle> for WindowHandle<'_>

source§

fn as_ref(&self) -> &RawWindowHandle

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Borrow<RawWindowHandle> for WindowHandle<'_>

source§

fn borrow(&self) -> &RawWindowHandle

Immutably borrows from an owned value. Read more
source§

impl<'a> Clone for WindowHandle<'a>

source§

fn clone(&self) -> WindowHandle<'a>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WindowHandle<'_>

source§

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

Formats the value using the given formatter. Read more
source§

impl From<WindowHandle<'_>> for RawWindowHandle

source§

fn from(handle: WindowHandle<'_>) -> Self

Converts to this type from the input type.
source§

impl HasWindowHandle for WindowHandle<'_>

source§

fn window_handle(&self) -> Result<Self, HandleError>

Get a handle to the window.
source§

impl<'a> Hash for WindowHandle<'a>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<'a> PartialEq for WindowHandle<'a>

source§

fn eq(&self, other: &WindowHandle<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> Copy for WindowHandle<'a>

source§

impl<'a> Eq for WindowHandle<'a>

source§

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> HasRawWindowHandle for T
where T: HasWindowHandle + ?Sized,

source§

fn raw_window_handle(&self) -> Result<RawWindowHandle, HandleError>

👎Deprecated: Use HasWindowHandle instead
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.