#[non_exhaustive]pub enum SurfaceTarget<'window> {
DisplayAndWindow(Box<dyn DisplayAndWindowHandle + 'window>),
Window(Box<dyn WindowHandle + 'window>),
}Available on crate feature
unstable-wgpu-29 only.Expand description
The window/canvas/surface/swap-chain/etc. a surface is attached to, for use with safe surface creation.
This is either a window or an actual web canvas depending on the platform and enabled features. Refer to the individual variants for more information.
See also SurfaceTargetUnsafe for unsafe variants.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
DisplayAndWindow(Box<dyn DisplayAndWindowHandle + 'window>)
Window and display handle producer.
If the specified display and window handle are not supported by any of the backends, then the surface will not be supported by any adapters.
§Errors
- On WebGL2: surface creation returns an error if the browser does not support WebGL2, or declines to provide GPU access (such as due to a resource shortage).
§Panics
- On macOS/Metal: will panic if not called on the main thread.
- On web: will panic if the
HasWindowHandledoes not properly refer to a canvas element. - On all platforms: If
crate::InstanceDescriptor::displaywas notNonebut its value is not identical to that returned byHasDisplayHandle::display_handle().
Window(Box<dyn WindowHandle + 'window>)
Window handle producer.
HasWindowHandle-only version of SurfaceTarget::DisplayAndWindow.
This requires that the display handle was already passed through
crate::InstanceDescriptor::display.
Implementations§
Source§impl<'a> SurfaceTarget<'a>
impl<'a> SurfaceTarget<'a>
Sourcepub fn from_window_without_display(
window: impl WindowHandle + 'a,
) -> SurfaceTarget<'a>
Available on crate feature wgpu-29 only.
pub fn from_window_without_display( window: impl WindowHandle + 'a, ) -> SurfaceTarget<'a>
wgpu-29 only.Constructor for Self::Window without consuming a display handle
Trait Implementations§
Source§impl<'a, T> From<T> for SurfaceTarget<'a>where
T: DisplayAndWindowHandle + 'a,
impl<'a, T> From<T> for SurfaceTarget<'a>where
T: DisplayAndWindowHandle + 'a,
Source§fn from(window: T) -> SurfaceTarget<'a>
fn from(window: T) -> SurfaceTarget<'a>
Converts to this type from the input type.
Auto Trait Implementations§
impl<'window> Freeze for SurfaceTarget<'window>
impl<'window> !RefUnwindSafe for SurfaceTarget<'window>
impl<'window> Send for SurfaceTarget<'window>
impl<'window> Sync for SurfaceTarget<'window>
impl<'window> Unpin for SurfaceTarget<'window>
impl<'window> UnsafeUnpin for SurfaceTarget<'window>
impl<'window> !UnwindSafe for SurfaceTarget<'window>
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
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.