Skip to main content

AngularColorStop

Struct AngularColorStop 

Source
pub struct AngularColorStop {
    pub color: Color,
    pub angle: Option<f32>,
    pub hint: f32,
}
Expand description

An angular color stop for a conic gradient

Fields§

§color: Color

Color of the stop

§angle: Option<f32>

The angle of the stop. Angles are relative to the start of the gradient and not other stops. If set to None the angle of the stop will be interpolated between the explicit stops or 0 and 2 PI degrees if there no explicit stops. Given angles are clamped to between 0., and TAU. This means that a list of stops:

let stops = [
    AngularColorStop::new(Color::WHITE, 0.),
    AngularColorStop::new(Color::BLACK, -1.),
    AngularColorStop::new(RED, 2. * TAU),
    AngularColorStop::new(BLUE, TAU),
];

is equivalent to:

let stops = [
    AngularColorStop::new(Color::WHITE, 0.),
    AngularColorStop::new(Color::BLACK, 0.),
    AngularColorStop::new(RED, TAU),
    AngularColorStop::new(BLUE, TAU),
];

Resulting in a black to red gradient, not white to blue.

§hint: f32

Normalized angle between this and the following stop of the interpolation midpoint.

Implementations§

Source§

impl AngularColorStop

Source

pub fn new(color: impl Into<Color>, angle: f32) -> AngularColorStop

Source

pub fn auto(color: impl Into<Color>) -> AngularColorStop

An angular stop without an explicit angle. The angles of automatic stops are interpolated evenly between explicit stops.

Examples found in repository?
examples/ui/styling/stacked_gradients.rs (line 49)
16fn setup(mut commands: Commands) {
17    commands.spawn(Camera2d);
18    commands
19        .spawn(Node {
20            display: Display::Grid,
21            width: percent(100),
22            height: percent(100),
23
24            ..Default::default()
25        })
26        .with_children(|commands| {
27            commands.spawn((
28                Node {
29                    width: percent(100),
30                    height: percent(100),
31                    ..Default::default()
32                },
33                BackgroundColor(Color::BLACK),
34                BackgroundGradient(vec![
35                    LinearGradient::to_top_right(vec![
36                        ColorStop::auto(RED),
37                        ColorStop::auto(RED.with_alpha(0.)),
38                    ])
39                    .into(),
40                    LinearGradient::to_top_left(vec![
41                        ColorStop::auto(BLUE),
42                        ColorStop::auto(BLUE.with_alpha(0.)),
43                    ])
44                    .into(),
45                    ConicGradient {
46                        start: 0.,
47                        position: UiPosition::CENTER,
48                        stops: vec![
49                            AngularColorStop::auto(YELLOW.with_alpha(0.)),
50                            AngularColorStop::auto(YELLOW.with_alpha(0.)),
51                            AngularColorStop::auto(YELLOW),
52                            AngularColorStop::auto(YELLOW.with_alpha(0.)),
53                            AngularColorStop::auto(YELLOW.with_alpha(0.)),
54                        ],
55                        ..Default::default()
56                    }
57                    .into(),
58                    RadialGradient {
59                        position: UiPosition::TOP.at_x(percent(5)),
60                        shape: RadialGradientShape::Circle(vh(30)),
61                        stops: vec![
62                            ColorStop::auto(Color::WHITE),
63                            ColorStop::auto(YELLOW),
64                            ColorStop::auto(YELLOW.with_alpha(0.1)),
65                            ColorStop::auto(YELLOW.with_alpha(0.)),
66                        ],
67                        ..Default::default()
68                    }
69                    .into(),
70                    LinearGradient {
71                        angle: TAU / 16.,
72                        stops: vec![
73                            ColorStop::auto(Color::BLACK),
74                            ColorStop::auto(Color::BLACK.with_alpha(0.)),
75                        ],
76                        ..Default::default()
77                    }
78                    .into(),
79                    LinearGradient {
80                        angle: 15. * TAU / 16.,
81                        stops: vec![
82                            ColorStop::auto(Color::BLACK),
83                            ColorStop::auto(Color::BLACK.with_alpha(0.)),
84                        ],
85                        ..Default::default()
86                    }
87                    .into(),
88                ]),
89            ));
90        });
91}
More examples
Hide additional examples
examples/ui/styling/gradients.rs (line 169)
27fn setup(mut commands: Commands) {
28    commands.spawn(Camera2d);
29
30    commands
31        .spawn(Node {
32            flex_direction: FlexDirection::Column,
33            row_gap: px(20),
34            margin: UiRect::all(px(20)),
35            ..Default::default()
36        })
37        .with_children(|commands| {
38            for (b, stops) in [
39                (
40                    4.,
41                    vec![
42                        ColorStop::new(Color::WHITE, percent(15)),
43                        ColorStop::new(Color::BLACK, percent(85)),
44                    ],
45                ),
46                (4., vec![RED.into(), BLUE.into(), LIME.into()]),
47                (
48                    0.,
49                    vec![
50                        RED.into(),
51                        ColorStop::new(RED, percent(100. / 7.)),
52                        ColorStop::new(ORANGE, percent(100. / 7.)),
53                        ColorStop::new(ORANGE, percent(200. / 7.)),
54                        ColorStop::new(YELLOW, percent(200. / 7.)),
55                        ColorStop::new(YELLOW, percent(300. / 7.)),
56                        ColorStop::new(GREEN, percent(300. / 7.)),
57                        ColorStop::new(GREEN, percent(400. / 7.)),
58                        ColorStop::new(BLUE, percent(400. / 7.)),
59                        ColorStop::new(BLUE, percent(500. / 7.)),
60                        ColorStop::new(INDIGO, percent(500. / 7.)),
61                        ColorStop::new(INDIGO, percent(600. / 7.)),
62                        ColorStop::new(VIOLET, percent(600. / 7.)),
63                        VIOLET.into(),
64                    ],
65                ),
66            ] {
67                commands.spawn(Node::default()).with_children(|commands| {
68                    commands
69                        .spawn(Node {
70                            flex_direction: FlexDirection::Column,
71                            row_gap: px(5),
72                            ..Default::default()
73                        })
74                        .with_children(|commands| {
75                            for (w, h) in [(70., 70.), (35., 70.), (70., 35.)] {
76                                commands
77                                    .spawn(Node {
78                                        column_gap: px(10),
79                                        ..Default::default()
80                                    })
81                                    .with_children(|commands| {
82                                        for angle in (0..8).map(|i| i as f32 * TAU / 8.) {
83                                            commands.spawn((
84                                                Node {
85                                                    width: px(w),
86                                                    height: px(h),
87                                                    border: UiRect::all(px(b)),
88                                                    border_radius: BorderRadius::all(px(20)),
89                                                    ..default()
90                                                },
91                                                BackgroundGradient::from(LinearGradient {
92                                                    angle,
93                                                    stops: stops.clone(),
94                                                    ..default()
95                                                }),
96                                                BorderGradient::from(LinearGradient {
97                                                    angle: 3. * TAU / 8.,
98                                                    stops: vec![
99                                                        YELLOW.into(),
100                                                        Color::WHITE.into(),
101                                                        ORANGE.into(),
102                                                    ],
103                                                    ..default()
104                                                }),
105                                            ));
106                                        }
107                                    });
108                            }
109                        });
110
111                    commands.spawn(Node::default()).with_children(|commands| {
112                        commands.spawn((
113                            Node {
114                                aspect_ratio: Some(1.),
115                                height: percent(100),
116                                border: UiRect::all(px(b)),
117                                margin: UiRect::left(px(20)),
118                                border_radius: BorderRadius::all(px(20)),
119                                ..default()
120                            },
121                            BackgroundGradient::from(LinearGradient {
122                                angle: 0.,
123                                stops: stops.clone(),
124                                ..default()
125                            }),
126                            BorderGradient::from(LinearGradient {
127                                angle: 3. * TAU / 8.,
128                                stops: vec![YELLOW.into(), Color::WHITE.into(), ORANGE.into()],
129                                ..default()
130                            }),
131                            AnimateMarker,
132                        ));
133
134                        commands.spawn((
135                            Node {
136                                aspect_ratio: Some(1.),
137                                height: percent(100),
138                                border: UiRect::all(px(b)),
139                                margin: UiRect::left(px(20)),
140                                border_radius: BorderRadius::all(px(20)),
141                                ..default()
142                            },
143                            BackgroundGradient::from(RadialGradient {
144                                stops: stops.clone(),
145                                shape: RadialGradientShape::ClosestSide,
146                                position: UiPosition::CENTER,
147                                ..default()
148                            }),
149                            BorderGradient::from(LinearGradient {
150                                angle: 3. * TAU / 8.,
151                                stops: vec![YELLOW.into(), Color::WHITE.into(), ORANGE.into()],
152                                ..default()
153                            }),
154                            AnimateMarker,
155                        ));
156                        commands.spawn((
157                            Node {
158                                aspect_ratio: Some(1.),
159                                height: percent(100),
160                                border: UiRect::all(px(b)),
161                                margin: UiRect::left(px(20)),
162                                border_radius: BorderRadius::all(px(20)),
163                                ..default()
164                            },
165                            BackgroundGradient::from(ConicGradient {
166                                start: 0.,
167                                stops: stops
168                                    .iter()
169                                    .map(|stop| AngularColorStop::auto(stop.color))
170                                    .collect(),
171                                position: UiPosition::CENTER,
172                                ..default()
173                            }),
174                            BorderGradient::from(LinearGradient {
175                                angle: 3. * TAU / 8.,
176                                stops: vec![YELLOW.into(), Color::WHITE.into(), ORANGE.into()],
177                                ..default()
178                            }),
179                            AnimateMarker,
180                        ));
181                    });
182                });
183            }
184
185            let button = commands.spawn((
186                        Button,
187                        Node {
188                            border: UiRect::all(px(2)),
189                            padding: UiRect::axes(px(8), px(4)),
190                            // horizontally center child text
191                            justify_content: JustifyContent::Center,
192                            // vertically center child text
193                            align_items: AlignItems::Center,
194                            border_radius: BorderRadius::MAX,
195                            ..default()
196                        },
197                        BorderColor::all(Color::WHITE),
198                        BackgroundColor(Color::BLACK),
199                        children![(
200                            Text::new("next color space"),
201                            TextColor(Color::srgb(0.9, 0.9, 0.9)),
202                            TextShadow::default(),
203                        )]
204                )).observe(
205                    |_event: On<Pointer<Over>>, mut border_query: Query<&mut BorderColor, With<Button>>| {
206                    *border_query.single_mut().unwrap() = BorderColor::all(RED);
207
208
209                })
210                .observe(
211                    |_event: On<Pointer<Out>>, mut border_query: Query<&mut BorderColor, With<Button>>| {
212                    *border_query.single_mut().unwrap() = BorderColor::all(Color::WHITE);
213                })
214                .observe(
215                        |_event: On<Pointer<Click>>,
216                            mut gradients_query: Query<&mut BackgroundGradient>,
217                            mut label_query: Query<
218                            &mut Text,
219                            With<CurrentColorSpaceLabel>,
220                        >| {
221                            let mut current_space = InterpolationColorSpace::default();
222                            for mut gradients in gradients_query.iter_mut() {
223                                for gradient in gradients.0.iter_mut() {
224                                    let space = match gradient {
225                                        Gradient::Linear(linear_gradient) => {
226                                            &mut linear_gradient.color_space
227                                        }
228                                        Gradient::Radial(radial_gradient) => {
229                                            &mut radial_gradient.color_space
230                                        }
231                                        Gradient::Conic(conic_gradient) => {
232                                            &mut conic_gradient.color_space
233                                        }
234                                    };
235                                    *space = match *space {
236                                        InterpolationColorSpace::Oklaba => {
237                                            InterpolationColorSpace::Oklcha
238                                        }
239                                        InterpolationColorSpace::Oklcha => {
240                                            InterpolationColorSpace::OklchaLong
241                                        }
242                                        InterpolationColorSpace::OklchaLong => {
243                                            InterpolationColorSpace::Srgba
244                                        }
245                                        InterpolationColorSpace::Srgba => {
246                                            InterpolationColorSpace::LinearRgba
247                                        }
248                                        InterpolationColorSpace::LinearRgba => {
249                                            InterpolationColorSpace::Hsla
250                                        }
251                                        InterpolationColorSpace::Hsla => {
252                                            InterpolationColorSpace::HslaLong
253                                        }
254                                        InterpolationColorSpace::HslaLong => {
255                                            InterpolationColorSpace::Hsva
256                                        }
257                                        InterpolationColorSpace::Hsva => {
258                                            InterpolationColorSpace::HsvaLong
259                                        }
260                                        InterpolationColorSpace::HsvaLong => {
261                                            InterpolationColorSpace::Oklaba
262                                        }
263                                    };
264                                    current_space = *space;
265                                }
266                            }
267                            for mut label in label_query.iter_mut() {
268                                label.0 = format!("{current_space:?}");
269                            }
270                        }
271                    ).id();
272
273            commands.spawn(
274                Node {
275                    flex_direction: FlexDirection::Column,
276                    row_gap: px(10),
277                    align_items: AlignItems::Center,
278                    ..Default::default()
279                }
280            ).with_children(|commands| {
281                commands.spawn((Text::new(format!("{:?}", InterpolationColorSpace::default())), TextFont { font_size: FontSize::Px(25.), ..default() }, CurrentColorSpaceLabel));
282
283            })
284            .add_child(button);
285        });
286}
Source

pub const fn with_hint(self, hint: f32) -> AngularColorStop

Trait Implementations§

Source§

impl Clone for AngularColorStop

Source§

fn clone(&self) -> AngularColorStop

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for AngularColorStop

Source§

impl Debug for AngularColorStop

Source§

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

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

impl Default for AngularColorStop

Source§

fn default() -> AngularColorStop

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for AngularColorStop

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<AngularColorStop, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<(Color, f32)> for AngularColorStop

Source§

fn from(_: (Color, f32)) -> AngularColorStop

Converts to this type from the input type.
Source§

impl From<Color> for AngularColorStop

Source§

fn from(color: Color) -> AngularColorStop

Converts to this type from the input type.
Source§

impl From<Srgba> for AngularColorStop

Source§

fn from(color: Srgba) -> AngularColorStop

Converts to this type from the input type.
Source§

impl FromArg for AngularColorStop

Source§

type This<'from_arg> = AngularColorStop

The type to convert into. Read more
Source§

fn from_arg( arg: Arg<'_>, ) -> Result<<AngularColorStop as FromArg>::This<'_>, ArgError>

Creates an item from an argument. Read more
Source§

impl FromReflect for AngularColorStop

Source§

fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<AngularColorStop>

Constructs a concrete instance of Self from a reflected value.
Source§

fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>

Attempts to downcast the given value to Self using, constructing the value using from_reflect if that fails. Read more
Source§

impl GetOwnership for AngularColorStop

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl GetTypeRegistration for AngularColorStop

Source§

fn get_type_registration() -> TypeRegistration

Returns the default TypeRegistration for this type.
Source§

fn register_type_dependencies(registry: &mut TypeRegistry)

Registers other types needed by this type. Read more
Source§

impl IntoReturn for AngularColorStop

Source§

fn into_return<'into_return>(self) -> Return<'into_return>
where AngularColorStop: 'into_return,

Converts Self into a Return value.
Source§

impl PartialEq for AngularColorStop

Source§

fn eq(&self, other: &AngularColorStop) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 PartialReflect for AngularColorStop

Source§

fn get_represented_type_info(&self) -> Option<&'static TypeInfo>

Returns the TypeInfo of the type represented by this value. Read more
Source§

fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>

Tries to apply a reflected value to this value. Read more
Source§

fn reflect_kind(&self) -> ReflectKind

Returns a zero-sized enumeration of “kinds” of type. Read more
Source§

fn reflect_ref(&self) -> ReflectRef<'_>

Returns an immutable enumeration of “kinds” of type. Read more
Source§

fn reflect_mut(&mut self) -> ReflectMut<'_>

Returns a mutable enumeration of “kinds” of type. Read more
Source§

fn reflect_owned(self: Box<AngularColorStop>) -> ReflectOwned

Returns an owned enumeration of “kinds” of type. Read more
Source§

fn try_into_reflect( self: Box<AngularColorStop>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>

Attempts to cast this type to a boxed, fully-reflected value.
Source§

fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>

Attempts to cast this type to a fully-reflected value.
Source§

fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>

Attempts to cast this type to a mutable, fully-reflected value.
Source§

fn into_partial_reflect(self: Box<AngularColorStop>) -> Box<dyn PartialReflect>

Casts this type to a boxed, reflected value. Read more
Source§

fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)

Casts this type to a reflected value. Read more
Source§

fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)

Casts this type to a mutable, reflected value. Read more
Source§

fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>

Returns a “partial equality” comparison result. Read more
Source§

fn reflect_partial_cmp( &self, value: &(dyn PartialReflect + 'static), ) -> Option<Ordering>

Returns a “partial comparison” result. Read more
Source§

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

Debug formatter for the value. Read more
Source§

fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>

Attempts to clone Self using reflection. Read more
Source§

fn apply(&mut self, value: &(dyn PartialReflect + 'static))

Applies a reflected value to this value. Read more
Source§

fn to_dynamic(&self) -> Box<dyn PartialReflect>

Converts this reflected value into its dynamic representation based on its kind. Read more
Source§

fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
where T: 'static, Self: Sized + TypePath,

For a type implementing PartialReflect, combines reflect_clone and take in a useful fashion, automatically constructing an appropriate ReflectCloneError if the downcast fails.
Source§

fn reflect_hash(&self) -> Option<u64>

Returns a hash of the value (which includes the type). Read more
Source§

fn is_dynamic(&self) -> bool

Indicates whether or not this type is a dynamic type. Read more
Source§

impl Reflect for AngularColorStop

Source§

fn into_any(self: Box<AngularColorStop>) -> Box<dyn Any>

Returns the value as a Box<dyn Any>. Read more
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Returns the value as a &dyn Any. Read more
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Returns the value as a &mut dyn Any. Read more
Source§

fn into_reflect(self: Box<AngularColorStop>) -> Box<dyn Reflect>

Casts this type to a boxed, fully-reflected value.
Source§

fn as_reflect(&self) -> &(dyn Reflect + 'static)

Casts this type to a fully-reflected value.
Source§

fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)

Casts this type to a mutable, fully-reflected value.
Source§

fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>

Performs a type-checked assignment of a reflected value to this value. Read more
Source§

impl Serialize for AngularColorStop

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Struct for AngularColorStop

Source§

fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>

Gets a reference to the value of the field named name as a &dyn PartialReflect.
Source§

fn field_mut( &mut self, name: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>

Gets a mutable reference to the value of the field named name as a &mut dyn PartialReflect.
Source§

fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>

Gets a reference to the value of the field with index index as a &dyn PartialReflect.
Source§

fn field_at_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>

Gets a mutable reference to the value of the field with index index as a &mut dyn PartialReflect.
Source§

fn name_at(&self, index: usize) -> Option<&str>

Gets the name of the field with index index.
Source§

fn index_of_name(&self, name: &str) -> Option<usize>

Gets the index of the field with the given name.
Source§

fn field_len(&self) -> usize

Returns the number of fields in the struct.
Source§

fn iter_fields(&self) -> FieldIter<'_>

Returns an iterator over the values of the reflectable fields for this struct.
Source§

fn to_dynamic_struct(&self) -> DynamicStruct

Creates a new DynamicStruct from this struct.
Source§

fn get_represented_struct_info(&self) -> Option<&'static StructInfo>

Will return None if TypeInfo is not available.
Source§

impl StructuralPartialEq for AngularColorStop

Source§

impl TypePath for AngularColorStop

Source§

fn type_path() -> &'static str

Returns the fully qualified path of the underlying type. Read more
Source§

fn short_type_path() -> &'static str

Returns a short, pretty-print enabled path to the type. Read more
Source§

fn type_ident() -> Option<&'static str>

Returns the name of the type, or None if it is anonymous. Read more
Source§

fn crate_name() -> Option<&'static str>

Returns the name of the crate the type is in, or None if it is anonymous. Read more
Source§

fn module_path() -> Option<&'static str>

Returns the path to the module the type is in, or None if it is anonymous. Read more
Source§

impl Typed for AngularColorStop

Source§

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.

Auto Trait Implementations§

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, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

Source§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
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> Brush for T
where T: Clone + PartialEq + Default + Debug,

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<T> ConditionalSend for T
where T: Send,

Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast for T
where T: Any,

Source§

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.
Source§

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.
Source§

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.
Source§

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.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> DynamicTypePath for T
where T: TypePath,

Source§

impl<T> DynamicTyped for T
where T: Typed,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> FromTemplate for T
where T: Clone + Default + Unpin,

Source§

type Template = T

The Template for this type.
Source§

impl<T> FromWorld for T
where T: Default,

Source§

fn from_world(_world: &mut World) -> T

Creates Self using default().

Source§

impl<S> GetField for S
where S: Struct,

Source§

fn get_field<T>(&self, name: &str) -> Option<&T>
where T: Reflect,

Gets a reference to the value of the field named name, downcast to T.
Source§

fn get_field_mut<T>(&mut self, name: &str) -> Option<&mut T>
where T: Reflect,

Gets a mutable reference to the value of the field named name, downcast to T.
Source§

impl<T> GetPath for T
where T: Reflect + ?Sized,

Source§

fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>

Returns a reference to the value specified by path. Read more
Source§

fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>

Returns a mutable reference to the value specified by path. Read more
Source§

fn path<'p, T>( &self, path: impl ReflectPath<'p>, ) -> Result<&T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed reference to the value specified by path. Read more
Source§

fn path_mut<'p, T>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut T, ReflectPathError<'p>>
where T: Reflect,

Returns a statically typed mutable reference to the value specified by path. Read more
Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> HitDataExtra for T
where T: Send + Sync + Debug + Any + 'static,

Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> InitializeFromFunction<T> for T

Source§

fn initialize_from_function(f: fn() -> T) -> T

Create an instance of this type from an initialization function
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<G> PatchFromTemplate for G
where G: FromTemplate,

Source§

type Template = <G as FromTemplate>::Template

The Template that will be patched.
Source§

fn patch<F>(func: F) -> TemplatePatch<F, <G as PatchFromTemplate>::Template>
where F: FnOnce(&mut <G as PatchFromTemplate>::Template, &mut ResolveContext<'_>),

Takes a “patch function” func, and turns it into a TemplatePatch.
Source§

impl<T> PatchTemplate for T
where T: Template,

Source§

fn patch_template<F>(func: F) -> TemplatePatch<F, T>
where F: FnOnce(&mut T, &mut ResolveContext<'_>),

Takes a “patch function” func that patches this Template, and turns it into a TemplatePatch.
Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Reflectable for T

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> Settings for T
where T: 'static + Send + Sync,

Source§

impl<Ret> SpawnIfAsync<(), Ret> for Ret

Source§

fn spawn(self) -> Ret

Spawn the value into the dioxus runtime if it is an async block
Source§

impl<T, O> SuperFrom<T> for O
where O: From<T>,

Source§

fn super_from(input: T) -> O

Convert from a type to another type.
Source§

impl<T, O, M> SuperInto<O, M> for T
where O: SuperFrom<T, M>,

Source§

fn super_into(self) -> O

Convert from a type to another type.
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> Template for T
where T: Clone + Default + Unpin,

Source§

type Output = T

The type of value produced by this Template.
Source§

fn build_template( &self, _context: &mut TemplateContext<'_, '_>, ) -> Result<<T as Template>::Output, BevyError>

Uses this template and the given entity context to produce a Template::Output.
Source§

fn clone_template(&self) -> T

Clones this template. See Clone.
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> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
Source§

impl<T> TypeData for T
where T: 'static + Send + Sync + Clone,

Source§

fn clone_type_data(&self) -> Box<dyn TypeData>

Creates a type-erased clone of this value.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more