RenderLayers

Struct RenderLayers 

Source
pub struct RenderLayers(/* private fields */);
Expand description

Defines which rendering layers an entity belongs to.

A camera renders an entity only when their render layers intersect.

The Default instance of RenderLayers contains layer 0, the first layer. Entities without this component also belong to layer 0.

An empty RenderLayers makes the entity invisible.

Implementations§

Source§

impl RenderLayers

Source

pub const fn layer(n: usize) -> RenderLayers

Create a new RenderLayers belonging to the given layer.

This const constructor is limited to size_of::<usize>() layers. If you need to support an arbitrary number of layers, use with or from_layers.

Examples found in repository?
examples/2d/pixel_grid_snap.rs (line 22)
22const PIXEL_PERFECT_LAYERS: RenderLayers = RenderLayers::layer(0);
23
24/// Render layers for high-resolution rendering.
25const HIGH_RES_LAYERS: RenderLayers = RenderLayers::layer(1);
More examples
Hide additional examples
examples/3d/order_independent_transparency.rs (line 33)
22fn setup(
23    mut commands: Commands,
24    mut meshes: ResMut<Assets<Mesh>>,
25    mut materials: ResMut<Assets<StandardMaterial>>,
26) {
27    // camera
28    commands.spawn((
29        Camera3d::default(),
30        Transform::from_xyz(0.0, 0.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y),
31        // Add this component to this camera to render transparent meshes using OIT
32        OrderIndependentTransparencySettings::default(),
33        RenderLayers::layer(1),
34        // Msaa currently doesn't work with OIT
35        Msaa::Off,
36    ));
37
38    // light
39    commands.spawn((
40        PointLight {
41            shadows_enabled: false,
42            ..default()
43        },
44        Transform::from_xyz(4.0, 8.0, 4.0),
45        RenderLayers::layer(1),
46    ));
47
48    // spawn help text
49    commands.spawn((
50        Text::default(),
51        Node {
52            position_type: PositionType::Absolute,
53            top: px(12),
54            left: px(12),
55            ..default()
56        },
57        RenderLayers::layer(1),
58        children![
59            TextSpan::new("Press T to toggle OIT\n"),
60            TextSpan::new("OIT Enabled"),
61            TextSpan::new("\nPress C to cycle test scenes"),
62        ],
63    ));
64
65    // spawn default scene
66    spawn_spheres(&mut commands, &mut meshes, &mut materials);
67}
68
69fn toggle_oit(
70    mut commands: Commands,
71    text: Single<Entity, With<Text>>,
72    keyboard_input: Res<ButtonInput<KeyCode>>,
73    q: Single<(Entity, Has<OrderIndependentTransparencySettings>), With<Camera3d>>,
74    mut text_writer: TextUiWriter,
75) {
76    if keyboard_input.just_pressed(KeyCode::KeyT) {
77        let (e, has_oit) = *q;
78        *text_writer.text(*text, 2) = if has_oit {
79            // Removing the component will completely disable OIT for this camera
80            commands
81                .entity(e)
82                .remove::<OrderIndependentTransparencySettings>();
83            "OIT disabled".to_string()
84        } else {
85            // Adding the component to the camera will render any transparent meshes
86            // with OIT instead of alpha blending
87            commands
88                .entity(e)
89                .insert(OrderIndependentTransparencySettings::default());
90            "OIT enabled".to_string()
91        };
92    }
93}
94
95fn cycle_scenes(
96    mut commands: Commands,
97    keyboard_input: Res<ButtonInput<KeyCode>>,
98    mut meshes: ResMut<Assets<Mesh>>,
99    mut materials: ResMut<Assets<StandardMaterial>>,
100    q: Query<Entity, With<Mesh3d>>,
101    mut scene_id: Local<usize>,
102) {
103    if keyboard_input.just_pressed(KeyCode::KeyC) {
104        // despawn current scene
105        for e in &q {
106            commands.entity(e).despawn();
107        }
108        // increment scene_id
109        *scene_id = (*scene_id + 1) % 2;
110        // spawn next scene
111        match *scene_id {
112            0 => spawn_spheres(&mut commands, &mut meshes, &mut materials),
113            1 => spawn_occlusion_test(&mut commands, &mut meshes, &mut materials),
114            _ => unreachable!(),
115        }
116    }
117}
118
119/// Spawns 3 overlapping spheres
120/// Technically, when using `alpha_to_coverage` with MSAA this particular example wouldn't break,
121/// but it breaks when disabling MSAA and is enough to show the difference between OIT enabled vs disabled.
122fn spawn_spheres(
123    commands: &mut Commands,
124    meshes: &mut Assets<Mesh>,
125    materials: &mut Assets<StandardMaterial>,
126) {
127    let pos_a = Vec3::new(-1.0, 0.75, 0.0);
128    let pos_b = Vec3::new(0.0, -0.75, 0.0);
129    let pos_c = Vec3::new(1.0, 0.75, 0.0);
130
131    let offset = Vec3::new(0.0, 0.0, 0.0);
132
133    let sphere_handle = meshes.add(Sphere::new(2.0).mesh());
134
135    let alpha = 0.25;
136
137    let render_layers = RenderLayers::layer(1);
138
139    commands.spawn((
140        Mesh3d(sphere_handle.clone()),
141        MeshMaterial3d(materials.add(StandardMaterial {
142            base_color: RED.with_alpha(alpha).into(),
143            alpha_mode: AlphaMode::Blend,
144            ..default()
145        })),
146        Transform::from_translation(pos_a + offset),
147        render_layers.clone(),
148    ));
149    commands.spawn((
150        Mesh3d(sphere_handle.clone()),
151        MeshMaterial3d(materials.add(StandardMaterial {
152            base_color: GREEN.with_alpha(alpha).into(),
153            alpha_mode: AlphaMode::Blend,
154            ..default()
155        })),
156        Transform::from_translation(pos_b + offset),
157        render_layers.clone(),
158    ));
159    commands.spawn((
160        Mesh3d(sphere_handle.clone()),
161        MeshMaterial3d(materials.add(StandardMaterial {
162            base_color: BLUE.with_alpha(alpha).into(),
163            alpha_mode: AlphaMode::Blend,
164            ..default()
165        })),
166        Transform::from_translation(pos_c + offset),
167        render_layers.clone(),
168    ));
169}
170
171/// Spawn a combination of opaque cubes and transparent spheres.
172/// This is useful to make sure transparent meshes drawn with OIT
173/// are properly occluded by opaque meshes.
174fn spawn_occlusion_test(
175    commands: &mut Commands,
176    meshes: &mut Assets<Mesh>,
177    materials: &mut Assets<StandardMaterial>,
178) {
179    let sphere_handle = meshes.add(Sphere::new(1.0).mesh());
180    let cube_handle = meshes.add(Cuboid::from_size(Vec3::ONE).mesh());
181    let cube_material = materials.add(Color::srgb(0.8, 0.7, 0.6));
182
183    let render_layers = RenderLayers::layer(1);
184
185    // front
186    let x = -2.5;
187    commands.spawn((
188        Mesh3d(cube_handle.clone()),
189        MeshMaterial3d(cube_material.clone()),
190        Transform::from_xyz(x, 0.0, 2.0),
191        render_layers.clone(),
192    ));
193    commands.spawn((
194        Mesh3d(sphere_handle.clone()),
195        MeshMaterial3d(materials.add(StandardMaterial {
196            base_color: RED.with_alpha(0.5).into(),
197            alpha_mode: AlphaMode::Blend,
198            ..default()
199        })),
200        Transform::from_xyz(x, 0., 0.),
201        render_layers.clone(),
202    ));
203
204    // intersection
205    commands.spawn((
206        Mesh3d(cube_handle.clone()),
207        MeshMaterial3d(cube_material.clone()),
208        Transform::from_xyz(x, 0.0, 1.0),
209        render_layers.clone(),
210    ));
211    commands.spawn((
212        Mesh3d(sphere_handle.clone()),
213        MeshMaterial3d(materials.add(StandardMaterial {
214            base_color: RED.with_alpha(0.5).into(),
215            alpha_mode: AlphaMode::Blend,
216            ..default()
217        })),
218        Transform::from_xyz(0., 0., 0.),
219        render_layers.clone(),
220    ));
221
222    // back
223    let x = 2.5;
224    commands.spawn((
225        Mesh3d(cube_handle.clone()),
226        MeshMaterial3d(cube_material.clone()),
227        Transform::from_xyz(x, 0.0, -2.0),
228        render_layers.clone(),
229    ));
230    commands.spawn((
231        Mesh3d(sphere_handle.clone()),
232        MeshMaterial3d(materials.add(StandardMaterial {
233            base_color: RED.with_alpha(0.5).into(),
234            alpha_mode: AlphaMode::Blend,
235            ..default()
236        })),
237        Transform::from_xyz(x, 0., 0.),
238        render_layers.clone(),
239    ));
240}
examples/camera/first_person_view_model.rs (line 134)
99fn spawn_view_model(
100    mut commands: Commands,
101    mut meshes: ResMut<Assets<Mesh>>,
102    mut materials: ResMut<Assets<StandardMaterial>>,
103) {
104    let arm = meshes.add(Cuboid::new(0.1, 0.1, 0.5));
105    let arm_material = materials.add(Color::from(tailwind::TEAL_200));
106
107    commands.spawn((
108        Player,
109        CameraSensitivity::default(),
110        Transform::from_xyz(0.0, 1.0, 0.0),
111        Visibility::default(),
112        children![
113            (
114                WorldModelCamera,
115                Camera3d::default(),
116                Projection::from(PerspectiveProjection {
117                    fov: 90.0_f32.to_radians(),
118                    ..default()
119                }),
120            ),
121            // Spawn view model camera.
122            (
123                Camera3d::default(),
124                Camera {
125                    // Bump the order to render on top of the world model.
126                    order: 1,
127                    ..default()
128                },
129                Projection::from(PerspectiveProjection {
130                    fov: 70.0_f32.to_radians(),
131                    ..default()
132                }),
133                // Only render objects belonging to the view model.
134                RenderLayers::layer(VIEW_MODEL_RENDER_LAYER),
135            ),
136            // Spawn the player's right arm.
137            (
138                Mesh3d(arm),
139                MeshMaterial3d(arm_material),
140                Transform::from_xyz(0.2, -0.1, -0.25),
141                // Ensure the arm is only rendered by the view model camera.
142                RenderLayers::layer(VIEW_MODEL_RENDER_LAYER),
143                // The arm is free-floating, so shadows would look weird.
144                NotShadowCaster,
145            ),
146        ],
147    ));
148}
examples/camera/2d_on_ui.rs (line 27)
13fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
14    // The default camera. `IsDefaultUiCamera` makes this the default camera to render UI elements to. Alternatively, you can add the `UiTargetCamera` component to root UI nodes to define which camera they should be rendered to.
15    commands.spawn((Camera2d, IsDefaultUiCamera));
16
17    // The second camera. The higher order means that this camera will be rendered after the first camera. We will render to this camera to draw on top of the UI.
18    commands.spawn((
19        Camera2d,
20        Camera {
21            order: 1,
22            // Don't draw anything in the background, to see the previous camera.
23            clear_color: ClearColorConfig::None,
24            ..default()
25        },
26        // This camera will only render entities which are on the same render layer.
27        RenderLayers::layer(1),
28    ));
29
30    commands.spawn((
31        // We could also use a `UiTargetCamera` component here instead of the general `IsDefaultUiCamera`.
32        Node {
33            width: percent(100),
34            height: percent(100),
35            display: Display::Flex,
36            justify_content: JustifyContent::Center,
37            align_items: AlignItems::Center,
38            ..default()
39        },
40        BackgroundColor(tailwind::ROSE_400.into()),
41        children![(
42            Node {
43                height: percent(30),
44                width: percent(20),
45                min_height: px(150),
46                min_width: px(150),
47                border: UiRect::all(px(2)),
48                ..default()
49            },
50            BorderRadius::all(percent(25)),
51            BorderColor::all(Color::WHITE),
52        )],
53    ));
54
55    // This 2D object will be rendered on the second camera, on top of the default camera where the UI is rendered.
56    commands.spawn((
57        Sprite {
58            image: asset_server.load("textures/rpg/chars/sensei/sensei.png"),
59            custom_size: Some(Vec2::new(100., 100.)),
60            ..default()
61        },
62        RenderLayers::layer(1),
63    ));
64}
examples/3d/render_to_texture.rs (line 43)
23fn setup(
24    mut commands: Commands,
25    mut meshes: ResMut<Assets<Mesh>>,
26    mut materials: ResMut<Assets<StandardMaterial>>,
27    mut images: ResMut<Assets<Image>>,
28) {
29    // This is the texture that will be rendered to.
30    let image = Image::new_target_texture(512, 512, TextureFormat::bevy_default());
31
32    let image_handle = images.add(image);
33
34    let cube_handle = meshes.add(Cuboid::new(4.0, 4.0, 4.0));
35    let cube_material_handle = materials.add(StandardMaterial {
36        base_color: Color::srgb(0.8, 0.7, 0.6),
37        reflectance: 0.02,
38        unlit: false,
39        ..default()
40    });
41
42    // This specifies the layer used for the first pass, which will be attached to the first pass camera and cube.
43    let first_pass_layer = RenderLayers::layer(1);
44
45    // The cube that will be rendered to the texture.
46    commands.spawn((
47        Mesh3d(cube_handle),
48        MeshMaterial3d(cube_material_handle),
49        Transform::from_translation(Vec3::new(0.0, 0.0, 1.0)),
50        FirstPassCube,
51        first_pass_layer.clone(),
52    ));
53
54    // Light
55    // NOTE: we add the light to both layers so it affects both the rendered-to-texture cube, and the cube on which we display the texture
56    // Setting the layer to RenderLayers::layer(0) would cause the main view to be lit, but the rendered-to-texture cube to be unlit.
57    // Setting the layer to RenderLayers::layer(1) would cause the rendered-to-texture cube to be lit, but the main view to be unlit.
58    commands.spawn((
59        PointLight::default(),
60        Transform::from_translation(Vec3::new(0.0, 0.0, 10.0)),
61        RenderLayers::layer(0).with(1),
62    ));
63
64    commands.spawn((
65        Camera3d::default(),
66        Camera {
67            // render before the "main pass" camera
68            order: -1,
69            target: image_handle.clone().into(),
70            clear_color: Color::WHITE.into(),
71            ..default()
72        },
73        Transform::from_translation(Vec3::new(0.0, 0.0, 15.0)).looking_at(Vec3::ZERO, Vec3::Y),
74        first_pass_layer,
75    ));
76
77    let cube_size = 4.0;
78    let cube_handle = meshes.add(Cuboid::new(cube_size, cube_size, cube_size));
79
80    // This material has the texture that has been rendered.
81    let material_handle = materials.add(StandardMaterial {
82        base_color_texture: Some(image_handle),
83        reflectance: 0.02,
84        unlit: false,
85        ..default()
86    });
87
88    // Main pass cube, with material containing the rendered first pass texture.
89    commands.spawn((
90        Mesh3d(cube_handle),
91        MeshMaterial3d(material_handle),
92        Transform::from_xyz(0.0, 0.0, 1.5).with_rotation(Quat::from_rotation_x(-PI / 5.0)),
93        MainPassCube,
94    ));
95
96    // The main pass camera.
97    commands.spawn((
98        Camera3d::default(),
99        Transform::from_xyz(0.0, 0.0, 15.0).looking_at(Vec3::ZERO, Vec3::Y),
100    ));
101}
examples/window/multi_window_text.rs (line 49)
27fn setup_scene(mut commands: Commands) {
28    // The first camera; no render target is specified, its render target will be set to the primary window automatically.
29    // This camera has no `RenderLayers` component, so it only renders entities belonging to render layer `0`.
30    commands.spawn(Camera2d);
31
32    // Spawn a second window
33    let secondary_window = commands
34        .spawn(Window {
35            title: "Secondary Window".to_owned(),
36            // Override the secondary window's scale factor and set it to double that of the primary window.
37            // This means the second window's text will use glyphs drawn at twice the resolution of the primary window's text,
38            // and they will be twice as big on screen.
39            resolution: WindowResolution::default().with_scale_factor_override(2.),
40            ..default()
41        })
42        .id();
43
44    // Spawn a second camera
45    let secondary_window_camera = commands
46        .spawn((
47            Camera2d,
48            // This camera will only render entities belonging to render layer `1`.
49            RenderLayers::layer(1),
50            Camera {
51                // Without an explicit render target, this camera would also target the primary window.
52                target: RenderTarget::Window(WindowRef::Entity(secondary_window)),
53                ..default()
54            },
55        ))
56        .id();
57
58    let node = Node {
59        position_type: PositionType::Absolute,
60        top: Val::Px(12.0),
61        left: Val::Px(12.0),
62        ..default()
63    };
64
65    let text_font = TextFont::from_font_size(30.);
66
67    // UI nodes can only be rendered by one camera at a time and ignore `RenderLayers`.
68    // This root UI node has no `UiTargetCamera` so `bevy_ui` will try to find a
69    // camera with the `IsDefaultUiCamera` marker component. When that fails (neither
70    // camera spawned here has an `IsDefaultUiCamera`), it queries for the
71    // first camera targeting the primary window and uses that.
72    commands.spawn(node.clone()).with_child((
73        Text::new("UI Text Primary Window"),
74        text_font.clone(),
75        TextShadow::default(),
76    ));
77
78    commands
79        .spawn((node, UiTargetCamera(secondary_window_camera)))
80        .with_child((
81            Text::new("UI Text Secondary Window"),
82            text_font.clone(),
83            TextShadow::default(),
84        ));
85
86    // `Text2d` belonging to render layer `0`.
87    commands.spawn((
88        Text2d::new("Text2d Primary Window"),
89        TextColor(YELLOW.into()),
90        text_font.clone(),
91        Text2dShadow::default(),
92    ));
93
94    // `Text2d` belonging to render layer `1`.
95    commands.spawn((
96        Text2d::new("Text2d Secondary Window"),
97        TextColor(YELLOW.into()),
98        text_font.clone(),
99        Text2dShadow::default(),
100        RenderLayers::layer(1),
101    ));
102
103    // This `Text2d` entity belongs to both render layers `0` and `1`, so it will be rendered by both
104    // cameras. A single text layout is generated per `Text2d` entity, targeting a specific scale
105    // factor. Since the two camera's render targets have different scale factors, the text layout
106    // will be generated using the higher scale factor (the secondary window's), and then downscaled when it is
107    // drawn by the camera targeting the primary window.
108    commands.spawn((
109        Text2d::new("Text2d Both Windows"),
110        TextColor(LIGHT_CYAN.into()),
111        text_font,
112        Text2dShadow::default(),
113        RenderLayers::from_layers(&[0, 1]),
114        Transform::from_xyz(0., -50., 0.),
115    ));
116}
Source

pub const fn none() -> RenderLayers

Create a new RenderLayers that belongs to no layers.

This is distinct from RenderLayers::default, which belongs to the first layer.

Source

pub fn from_layers(layers: &[usize]) -> RenderLayers

Create a RenderLayers from a list of layers.

Examples found in repository?
examples/camera/first_person_view_model.rs (line 186)
177fn spawn_lights(mut commands: Commands) {
178    commands.spawn((
179        PointLight {
180            color: Color::from(tailwind::ROSE_300),
181            shadows_enabled: true,
182            ..default()
183        },
184        Transform::from_xyz(-2.0, 4.0, -0.75),
185        // The light source illuminates both the world model and the view model.
186        RenderLayers::from_layers(&[DEFAULT_RENDER_LAYER, VIEW_MODEL_RENDER_LAYER]),
187    ));
188}
More examples
Hide additional examples
examples/window/multi_window_text.rs (line 113)
27fn setup_scene(mut commands: Commands) {
28    // The first camera; no render target is specified, its render target will be set to the primary window automatically.
29    // This camera has no `RenderLayers` component, so it only renders entities belonging to render layer `0`.
30    commands.spawn(Camera2d);
31
32    // Spawn a second window
33    let secondary_window = commands
34        .spawn(Window {
35            title: "Secondary Window".to_owned(),
36            // Override the secondary window's scale factor and set it to double that of the primary window.
37            // This means the second window's text will use glyphs drawn at twice the resolution of the primary window's text,
38            // and they will be twice as big on screen.
39            resolution: WindowResolution::default().with_scale_factor_override(2.),
40            ..default()
41        })
42        .id();
43
44    // Spawn a second camera
45    let secondary_window_camera = commands
46        .spawn((
47            Camera2d,
48            // This camera will only render entities belonging to render layer `1`.
49            RenderLayers::layer(1),
50            Camera {
51                // Without an explicit render target, this camera would also target the primary window.
52                target: RenderTarget::Window(WindowRef::Entity(secondary_window)),
53                ..default()
54            },
55        ))
56        .id();
57
58    let node = Node {
59        position_type: PositionType::Absolute,
60        top: Val::Px(12.0),
61        left: Val::Px(12.0),
62        ..default()
63    };
64
65    let text_font = TextFont::from_font_size(30.);
66
67    // UI nodes can only be rendered by one camera at a time and ignore `RenderLayers`.
68    // This root UI node has no `UiTargetCamera` so `bevy_ui` will try to find a
69    // camera with the `IsDefaultUiCamera` marker component. When that fails (neither
70    // camera spawned here has an `IsDefaultUiCamera`), it queries for the
71    // first camera targeting the primary window and uses that.
72    commands.spawn(node.clone()).with_child((
73        Text::new("UI Text Primary Window"),
74        text_font.clone(),
75        TextShadow::default(),
76    ));
77
78    commands
79        .spawn((node, UiTargetCamera(secondary_window_camera)))
80        .with_child((
81            Text::new("UI Text Secondary Window"),
82            text_font.clone(),
83            TextShadow::default(),
84        ));
85
86    // `Text2d` belonging to render layer `0`.
87    commands.spawn((
88        Text2d::new("Text2d Primary Window"),
89        TextColor(YELLOW.into()),
90        text_font.clone(),
91        Text2dShadow::default(),
92    ));
93
94    // `Text2d` belonging to render layer `1`.
95    commands.spawn((
96        Text2d::new("Text2d Secondary Window"),
97        TextColor(YELLOW.into()),
98        text_font.clone(),
99        Text2dShadow::default(),
100        RenderLayers::layer(1),
101    ));
102
103    // This `Text2d` entity belongs to both render layers `0` and `1`, so it will be rendered by both
104    // cameras. A single text layout is generated per `Text2d` entity, targeting a specific scale
105    // factor. Since the two camera's render targets have different scale factors, the text layout
106    // will be generated using the higher scale factor (the secondary window's), and then downscaled when it is
107    // drawn by the camera targeting the primary window.
108    commands.spawn((
109        Text2d::new("Text2d Both Windows"),
110        TextColor(LIGHT_CYAN.into()),
111        text_font,
112        Text2dShadow::default(),
113        RenderLayers::from_layers(&[0, 1]),
114        Transform::from_xyz(0., -50., 0.),
115    ));
116}
Source

pub fn with(self, layer: usize) -> RenderLayers

Add the given layer.

This may be called multiple times to allow an entity to belong to multiple rendering layers.

Examples found in repository?
examples/3d/render_to_texture.rs (line 61)
23fn setup(
24    mut commands: Commands,
25    mut meshes: ResMut<Assets<Mesh>>,
26    mut materials: ResMut<Assets<StandardMaterial>>,
27    mut images: ResMut<Assets<Image>>,
28) {
29    // This is the texture that will be rendered to.
30    let image = Image::new_target_texture(512, 512, TextureFormat::bevy_default());
31
32    let image_handle = images.add(image);
33
34    let cube_handle = meshes.add(Cuboid::new(4.0, 4.0, 4.0));
35    let cube_material_handle = materials.add(StandardMaterial {
36        base_color: Color::srgb(0.8, 0.7, 0.6),
37        reflectance: 0.02,
38        unlit: false,
39        ..default()
40    });
41
42    // This specifies the layer used for the first pass, which will be attached to the first pass camera and cube.
43    let first_pass_layer = RenderLayers::layer(1);
44
45    // The cube that will be rendered to the texture.
46    commands.spawn((
47        Mesh3d(cube_handle),
48        MeshMaterial3d(cube_material_handle),
49        Transform::from_translation(Vec3::new(0.0, 0.0, 1.0)),
50        FirstPassCube,
51        first_pass_layer.clone(),
52    ));
53
54    // Light
55    // NOTE: we add the light to both layers so it affects both the rendered-to-texture cube, and the cube on which we display the texture
56    // Setting the layer to RenderLayers::layer(0) would cause the main view to be lit, but the rendered-to-texture cube to be unlit.
57    // Setting the layer to RenderLayers::layer(1) would cause the rendered-to-texture cube to be lit, but the main view to be unlit.
58    commands.spawn((
59        PointLight::default(),
60        Transform::from_translation(Vec3::new(0.0, 0.0, 10.0)),
61        RenderLayers::layer(0).with(1),
62    ));
63
64    commands.spawn((
65        Camera3d::default(),
66        Camera {
67            // render before the "main pass" camera
68            order: -1,
69            target: image_handle.clone().into(),
70            clear_color: Color::WHITE.into(),
71            ..default()
72        },
73        Transform::from_translation(Vec3::new(0.0, 0.0, 15.0)).looking_at(Vec3::ZERO, Vec3::Y),
74        first_pass_layer,
75    ));
76
77    let cube_size = 4.0;
78    let cube_handle = meshes.add(Cuboid::new(cube_size, cube_size, cube_size));
79
80    // This material has the texture that has been rendered.
81    let material_handle = materials.add(StandardMaterial {
82        base_color_texture: Some(image_handle),
83        reflectance: 0.02,
84        unlit: false,
85        ..default()
86    });
87
88    // Main pass cube, with material containing the rendered first pass texture.
89    commands.spawn((
90        Mesh3d(cube_handle),
91        MeshMaterial3d(material_handle),
92        Transform::from_xyz(0.0, 0.0, 1.5).with_rotation(Quat::from_rotation_x(-PI / 5.0)),
93        MainPassCube,
94    ));
95
96    // The main pass camera.
97    commands.spawn((
98        Camera3d::default(),
99        Transform::from_xyz(0.0, 0.0, 15.0).looking_at(Vec3::ZERO, Vec3::Y),
100    ));
101}
Source

pub fn without(self, layer: usize) -> RenderLayers

Removes the given rendering layer.

Source

pub fn iter(&self) -> impl Iterator<Item = usize>

Get an iterator of the layers.

Source

pub fn intersects(&self, other: &RenderLayers) -> bool

Determine if a RenderLayers intersects another.

RenderLayerss intersect if they share any common layers.

A RenderLayers with no layers will not match any other RenderLayers, even another with no layers.

Source

pub fn bits(&self) -> &[u64]

Get the bitmask representation of the contained layers.

Source

pub fn intersection(&self, other: &RenderLayers) -> RenderLayers

Returns the set of layers shared by two instances of RenderLayers.

This corresponds to the self & other operation.

Source

pub fn union(&self, other: &RenderLayers) -> RenderLayers

Returns all layers included in either instance of RenderLayers.

This corresponds to the self | other operation.

Source

pub fn symmetric_difference(&self, other: &RenderLayers) -> RenderLayers

Returns all layers included in exactly one of the instances of RenderLayers.

This corresponds to the “exclusive or” (XOR) operation: self ^ other.

Trait Implementations§

Source§

impl BitAnd for RenderLayers

Source§

type Output = RenderLayers

The resulting type after applying the & operator.
Source§

fn bitand(self, rhs: RenderLayers) -> <RenderLayers as BitAnd>::Output

Performs the & operation. Read more
Source§

impl BitOr for RenderLayers

Source§

type Output = RenderLayers

The resulting type after applying the | operator.
Source§

fn bitor(self, rhs: RenderLayers) -> <RenderLayers as BitOr>::Output

Performs the | operation. Read more
Source§

impl BitXor for RenderLayers

Source§

type Output = RenderLayers

The resulting type after applying the ^ operator.
Source§

fn bitxor(self, rhs: RenderLayers) -> <RenderLayers as BitXor>::Output

Performs the ^ operation. Read more
Source§

impl Clone for RenderLayers

Source§

fn clone(&self) -> RenderLayers

Returns a duplicate 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 Component for RenderLayers
where RenderLayers: Send + Sync + 'static,

Source§

const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table

A constant indicating the storage type used for this component.
Source§

type Mutability = Mutable

A marker type to assist Bevy with determining if this component is mutable, or immutable. Mutable components will have Component<Mutability = Mutable>, while immutable components will instead have Component<Mutability = Immutable>. Read more
Source§

fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )

Registers required components. Read more
Source§

fn clone_behavior() -> ComponentCloneBehavior

Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§

fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_add ComponentHook for this Component if one is defined.
Source§

fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_insert ComponentHook for this Component if one is defined.
Source§

fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_replace ComponentHook for this Component if one is defined.
Source§

fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_remove ComponentHook for this Component if one is defined.
Source§

fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_despawn ComponentHook for this Component if one is defined.
Source§

fn map_entities<E>(_this: &mut Self, _mapper: &mut E)
where E: EntityMapper,

Maps the entities on this component using the given EntityMapper. This is used to remap entities in contexts like scenes and entity cloning. When deriving Component, this is populated by annotating fields containing entities with #[entities] Read more
Source§

impl Debug for RenderLayers

Source§

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

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

impl Default for &RenderLayers

Source§

fn default() -> &RenderLayers

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

impl Default for RenderLayers

Source§

fn default() -> RenderLayers

By default, this structure includes layer 0, which represents the first layer.

This is distinct from RenderLayers::none, which doesn’t belong to any layers.

Source§

impl FromArg for RenderLayers

Source§

type This<'from_arg> = RenderLayers

The type to convert into. Read more
Source§

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

Creates an item from an argument. Read more
Source§

impl FromIterator<usize> for RenderLayers

Source§

fn from_iter<T>(i: T) -> RenderLayers
where T: IntoIterator<Item = usize>,

Creates a value from an iterator. Read more
Source§

impl FromReflect for RenderLayers

Source§

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

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 RenderLayers

Source§

fn ownership() -> Ownership

Returns the ownership of Self.
Source§

impl GetTypeRegistration for RenderLayers

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 RenderLayers

Source§

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

Converts Self into a Return value.
Source§

impl Ord for RenderLayers

Source§

fn cmp(&self, other: &RenderLayers) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for RenderLayers

Source§

fn eq(&self, other: &RenderLayers) -> 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 PartialOrd for RenderLayers

Source§

fn partial_cmp(&self, other: &RenderLayers) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl PartialReflect for RenderLayers

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<RenderLayers>) -> ReflectOwned

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

fn try_into_reflect( self: Box<RenderLayers>, ) -> 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<RenderLayers>) -> 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 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. Read more
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 RenderLayers

Source§

fn into_any(self: Box<RenderLayers>) -> 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<RenderLayers>) -> 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 TupleStruct for RenderLayers

Source§

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

Returns a reference to the value of the field with index index as a &dyn Reflect.
Source§

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

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

fn field_len(&self) -> usize

Returns the number of fields in the tuple struct.
Source§

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

Returns an iterator over the values of the tuple struct’s fields.
Source§

fn to_dynamic_tuple_struct(&self) -> DynamicTupleStruct

Creates a new DynamicTupleStruct from this tuple struct.
Source§

fn get_represented_tuple_struct_info(&self) -> Option<&'static TupleStructInfo>

Will return None if TypeInfo is not available.
Source§

impl TypePath for RenderLayers

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 RenderLayers

Source§

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.
Source§

impl Eq for RenderLayers

Source§

impl StructuralPartialEq for RenderLayers

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<C> Bundle for C
where C: Component,

Source§

fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )

Source§

fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )

Gets this Bundle’s component ids. This will be None if the component has not been registered.
Source§

impl<C> BundleFromComponents for C
where C: Component,

Source§

unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
where F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a>,

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<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
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> 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 + Sync + Send>

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<T> DynEq for T
where T: Any + Eq,

Source§

fn dyn_eq(&self, other: &(dyn DynEq + 'static)) -> bool

This method tests for self and other values to be equal. Read more
Source§

impl<C> DynamicBundle for C
where C: Component,

Source§

type Effect = ()

An operation on the entity that happens after inserting this bundle.
Source§

unsafe fn get_components( ptr: MovingPtr<'_, C>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect

Moves the components out of the bundle. Read more
Source§

unsafe fn apply_effect( _ptr: MovingPtr<'_, MaybeUninit<C>>, _entity: &mut EntityWorldMut<'_>, )

Applies the after-effects of spawning this bundle. Read more
Source§

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

Source§

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

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
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> FromWorld for T
where T: Default,

Source§

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

Creates Self using default().

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<S> GetTupleStructField for S
where S: TupleStruct,

Source§

fn get_field<T>(&self, index: usize) -> Option<&T>
where T: Reflect,

Returns a reference to the value of the field with index index, downcast to T.
Source§

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

Returns a mutable reference to the value of the field with index index, downcast to T.
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> 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<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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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> 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> 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
Source§

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

Source§

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

Source§

impl<T> Reflectable for T

Source§

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

Source§

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

Source§

impl<T> WasmNotSendSync for T

Source§

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