Struct blue_engine::Renderer
source · pub struct Renderer {Show 14 fields
pub surface: Option<Surface<'static>>,
pub instance: Instance,
pub adapter: Adapter,
pub device: Device,
pub queue: Queue,
pub config: SurfaceConfiguration,
pub size: PhysicalSize<u32>,
pub texture_bind_group_layout: BindGroupLayout,
pub default_uniform_bind_group_layout: BindGroupLayout,
pub depth_buffer: (Texture, TextureView, Sampler),
pub default_data: Option<(Textures, Shaders, UniformBuffers)>,
pub camera: Option<UniformBuffers>,
pub clear_color: Color,
pub scissor_rect: Option<(u32, u32, u32, u32)>,
}
Expand description
Main renderer class. this will contain all methods and data related to the renderer
Fields§
§surface: Option<Surface<'static>>
A wgpu::Surface
represents a platform-specific surface (e.g. a window) onto which rendered images may be presented.
instance: Instance
Context for all of the gpu objects
adapter: Adapter
Handle to a physical graphics and/or compute device.
device: Device
Open connection to a graphics and/or compute device.
queue: Queue
Handle to a command queue on a device.
config: SurfaceConfiguration
Describes a wgpu::Surface
size: PhysicalSize<u32>
The size of the window
texture_bind_group_layout: BindGroupLayout
The texture bind group layout
default_uniform_bind_group_layout: BindGroupLayout
The uniform bind group layout
depth_buffer: (Texture, TextureView, Sampler)
The depth buffer, used to render object depth
default_data: Option<(Textures, Shaders, UniformBuffers)>
The default data used within the renderer
camera: Option<UniformBuffers>
The camera used in the engine
clear_color: Color
Background clear color
scissor_rect: Option<(u32, u32, u32, u32)>
Scissor cut section of the screen to render to (x, y, width, height)
Implementations§
source§impl Renderer
impl Renderer
sourcepub fn build_pipeline(
&mut self,
shader: Shaders,
vertex_buffer: VertexBuffers,
texture: Textures,
uniform: Option<UniformBuffers>
) -> Result<Pipeline>
pub fn build_pipeline( &mut self, shader: Shaders, vertex_buffer: VertexBuffers, texture: Textures, uniform: Option<UniformBuffers> ) -> Result<Pipeline>
Creates a new render pipeline. Could be thought of as like materials in game engines.
sourcepub fn build_shader(
&mut self,
name: impl StringBuffer,
shader_source: String,
uniform_layout: Option<&BindGroupLayout>,
settings: ShaderSettings
) -> Result<Shaders>
pub fn build_shader( &mut self, name: impl StringBuffer, shader_source: String, uniform_layout: Option<&BindGroupLayout>, settings: ShaderSettings ) -> Result<Shaders>
Creates a shader group, the input must be spir-v compiled vertex and fragment shader
sourcepub fn build_texture(
&mut self,
name: impl StringBuffer,
texture_data: TextureData,
texture_mode: TextureMode
) -> Result<Textures>
pub fn build_texture( &mut self, name: impl StringBuffer, texture_data: TextureData, texture_mode: TextureMode ) -> Result<Textures>
Creates a new texture data
Examples found in repository?
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
fn main() {
// Start the engine
let mut engine = Engine::new().expect("window not initialized");
// build a texture as an example of resource to be shared
let texture = engine
.renderer
.build_texture(
"background",
TextureData::Path("resources/BlueLogoDiscord.png".to_string()),
blue_engine::TextureMode::Clamp,
)
.unwrap();
// build your main object with the texture
square(
"main",
ObjectSettings::default(),
&mut engine.renderer,
&mut engine.objects,
)
.expect("Error during creation of main square");
// add the texture to the main object as normally would
engine
.objects
.get_mut("main")
.unwrap()
.set_texture(texture)
.expect("Error during inserting texture to the main square");
// set position to make it visible
engine
.objects
.get_mut("main")
.expect("Error during setting the position of the main square")
.set_position(-1.5f32, 0f32, 0f32);
// create another object where you want to get resources shared with
square(
"alt",
ObjectSettings::default(),
&mut engine.renderer,
&mut engine.objects,
)
.expect("Error during creation of alt square");
// here you can use `reference_texture` to reference the texture from the main object
engine
.objects
.get_mut("alt")
.expect("Error during copying texture of the main square")
.reference_texture("main");
// setting position again to make it visible
engine
.objects
.get_mut("alt")
.expect("Error during setting the position of the alt square")
.set_position(1.5f32, 0f32, 0f32);
engine
.update_loop(move |_, _, _, _, _, _| {})
.expect("Error during update loop");
}
More examples
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
fn main() {
let mut engine = Engine::new_config(blue_engine::WindowDescriptor {
power_preference: blue_engine::PowerPreference::LowPower,
present_mode: blue_engine::wgpu::PresentMode::Immediate,
..Default::default()
})
.expect("win");
//let test_instance = Instance::default();
//println!("{:?}", test_instance.to_raw());
let texture = engine
.renderer
.build_texture(
"background",
TextureData::Path("resources/BlueLogoDiscord.png".to_string()),
blue_engine::TextureMode::Clamp,
)
.unwrap();
let texture2 = engine
.renderer
.build_texture(
"background",
TextureData::Path("resources/player.png".to_string()),
blue_engine::TextureMode::Clamp,
)
.unwrap();
let texture3 = engine
.renderer
.build_texture(
"background",
TextureData::Path("resources/image.png".to_string()),
blue_engine::TextureMode::Clamp,
)
.unwrap();
square(
"main",
ObjectSettings::default(),
&mut engine.renderer,
&mut engine.objects,
);
engine.objects.get_mut("main").unwrap().set_texture(texture);
engine
.objects
.get_mut("main")
.unwrap()
.set_position(-1f32, 0f32, 0f32);
square(
"alt",
ObjectSettings::default(),
&mut engine.renderer,
&mut engine.objects,
);
engine.objects.get_mut("alt").unwrap().set_texture(texture2);
engine
.objects
.get_mut("alt")
.unwrap()
.set_position(0.2f32, 0f32, 0.001f32);
square(
"alt2",
ObjectSettings::default(),
&mut engine.renderer,
&mut engine.objects,
);
engine
.objects
.get_mut("alt2")
.unwrap()
.set_texture(texture3);
engine
.objects
.get_mut("alt2")
.unwrap()
.set_position(-0.2f32, 0f32, 0.001f32);
let speed = -0.05;
let mut last_time = std::time::Instant::now();
let mut frames = 0;
engine
.update_loop(move |renderer, _window, objects, input, camera, plugins| {
// calculate FPS
let current_time = std::time::Instant::now();
frames += 1;
if current_time - last_time >= std::time::Duration::from_secs(1) {
println!("{}ms/frame", 1000f32 / frames as f32);
frames = 0;
last_time = current_time;
}
let sprite = objects.get_mut("alt").unwrap();
if input.key_held(blue_engine::KeyCode::ArrowUp) {
sprite.set_position(
sprite.position.x,
sprite.position.y - speed,
sprite.position.z,
);
//lm.ambient_color.data = [1f32, 1f32, 1f32, 1f32];
}
if input.key_held(blue_engine::KeyCode::ArrowDown) {
sprite.set_position(
sprite.position.x,
sprite.position.y + speed,
sprite.position.z,
);
//lm.ambient_color.data = [0.1f32, 0.1f32, 0.1f32, 1f32];
}
if input.key_held(blue_engine::KeyCode::ArrowLeft) {
sprite.set_position(
sprite.position.x + speed,
sprite.position.y,
sprite.position.z,
);
}
if input.key_held(blue_engine::KeyCode::ArrowRight) {
sprite.set_position(
sprite.position.x - speed,
sprite.position.y,
sprite.position.z,
);
}
if input.key_held(blue_engine::KeyCode::KeyE) {
sprite.set_position(
sprite.position.x,
sprite.position.y,
sprite.position.z + speed,
);
}
if input.key_held(blue_engine::KeyCode::KeyQ) {
sprite.set_position(
sprite.position.x,
sprite.position.y,
sprite.position.z - speed,
);
}
})
.expect("Error during update loop");
}
sourcepub fn build_uniform_buffer_part<T: Zeroable + Pod>(
&self,
name: impl StringBuffer,
value: T
) -> Buffer
pub fn build_uniform_buffer_part<T: Zeroable + Pod>( &self, name: impl StringBuffer, value: T ) -> Buffer
Creates a new uniform buffer part
This function doesn’t build the entire uniform buffers list, but rather only one of them
sourcepub fn build_uniform_buffer(
&mut self,
uniforms: &Vec<Buffer>
) -> Result<(UniformBuffers, BindGroupLayout)>
pub fn build_uniform_buffer( &mut self, uniforms: &Vec<Buffer> ) -> Result<(UniformBuffers, BindGroupLayout)>
Creates a new uniform buffer group, according to a list of types
sourcepub fn build_vertex_buffer(
&mut self,
vertices: &Vec<Vertex>,
indices: &Vec<u16>
) -> Result<VertexBuffers>
pub fn build_vertex_buffer( &mut self, vertices: &Vec<Vertex>, indices: &Vec<u16> ) -> Result<VertexBuffers>
Creates a new vertex buffer and indices
sourcepub fn build_instance(&self, instance_data: Vec<InstanceRaw>) -> Buffer
pub fn build_instance(&self, instance_data: Vec<InstanceRaw>) -> Buffer
Creates a new instance buffer for the object
source§impl Renderer
impl Renderer
sourcepub fn build_object(
&mut self,
name: impl StringBuffer,
vertices: Vec<Vertex>,
indices: Vec<u16>,
settings: ObjectSettings
) -> Result<Object>
pub fn build_object( &mut self, name: impl StringBuffer, vertices: Vec<Vertex>, indices: Vec<u16>, settings: ObjectSettings ) -> Result<Object>
Creates a new object
Is used to define a new object and add it to the storage. This offers full customizability and a framework for in-engine shapes to be developed.
§Arguments
name
- The name of the object.vertices
- A list of vertices for the object to draw withindices
- A list of indices that references the vertices, defining draw ordersettings
- The settings of the object
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Renderer
impl !RefUnwindSafe for Renderer
impl Unpin for Renderer
impl !UnwindSafe for Renderer
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
source§fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>
fn black<'a>(&'a self) -> FgColorDisplay<'a, Black, Self>
source§fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>
fn on_black<'a>(&'a self) -> BgColorDisplay<'a, Black, Self>
source§fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>
fn red<'a>(&'a self) -> FgColorDisplay<'a, Red, Self>
source§fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>
fn on_red<'a>(&'a self) -> BgColorDisplay<'a, Red, Self>
source§fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>
fn green<'a>(&'a self) -> FgColorDisplay<'a, Green, Self>
source§fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>
fn on_green<'a>(&'a self) -> BgColorDisplay<'a, Green, Self>
source§fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>
fn yellow<'a>(&'a self) -> FgColorDisplay<'a, Yellow, Self>
source§fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
source§fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>
fn blue<'a>(&'a self) -> FgColorDisplay<'a, Blue, Self>
source§fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>
fn on_blue<'a>(&'a self) -> BgColorDisplay<'a, Blue, Self>
source§fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
source§fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
source§fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn purple<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
source§fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
source§fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>
fn cyan<'a>(&'a self) -> FgColorDisplay<'a, Cyan, Self>
source§fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>
fn on_cyan<'a>(&'a self) -> BgColorDisplay<'a, Cyan, Self>
source§fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>
fn white<'a>(&'a self) -> FgColorDisplay<'a, White, Self>
source§fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>
fn on_white<'a>(&'a self) -> BgColorDisplay<'a, White, Self>
source§fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
source§fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
source§fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
source§fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
source§fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
source§fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
source§fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
source§fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
source§fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
source§fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
source§fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
source§fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
source§fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
source§fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
source§fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
source§fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
source§fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
source§fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
source§fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
source§fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
source§fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>
fn bold<'a>(&'a self) -> BoldDisplay<'a, Self>
source§fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>
fn dimmed<'a>(&'a self) -> DimDisplay<'a, Self>
source§fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>
fn italic<'a>(&'a self) -> ItalicDisplay<'a, Self>
source§fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>
fn underline<'a>(&'a self) -> UnderlineDisplay<'a, Self>
source§fn blink<'a>(&'a self) -> BlinkDisplay<'a, Self>
fn blink<'a>(&'a self) -> BlinkDisplay<'a, Self>
source§fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
source§fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>
fn reversed<'a>(&'a self) -> ReversedDisplay<'a, Self>
source§fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read moresource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read moresource§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
source§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
source§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
source§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.