pub struct ParamInfos<'a> { /* private fields */ }
Expand description
Infos of a Material. This includes all global shader variables and textures. Warning, you have to be cautious when settings some infos https://stereokit.net/Pages/StereoKit/Material/GetAllParamInfo.html
see also Material::get_all_param_info
ParamInfo
§Examples
use stereokit_rust::{material::{Material, MaterialParam, Cull},
mesh::Mesh, maths::{Vec3, Vec4, Matrix}};
let cube = Mesh::cube();
let mut material_cube = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
material_cube.face_cull(Cull::Front).tex_transform(Vec4::new(0.0, 0.0, 0.04, 0.04));
let mut param_infos = material_cube.get_all_param_info();
assert!(param_infos.has_param("line_color", MaterialParam::Vec3), "line_color is missing");
assert_eq!(param_infos.get_float("edge_pos"), 1.5);
// Change of unusual values that are not listed in Material
param_infos .set_float("edge_pos", 0.5)
.set_vector3("line_color", Vec3::new(0.54, 0.54, 0.20));
filename_scr = "screenshots/param_infos.jpeg";
test_screenshot!( // !!!! Get a proper main loop !!!!
cube.draw(token, &material_cube, Matrix::IDENTITY, None, None);
);

Implementations§
Source§impl<'a> ParamInfos<'a>
impl<'a> ParamInfos<'a>
Sourcepub fn from(material: &'a Material) -> ParamInfos<'a> ⓘ
pub fn from(material: &'a Material) -> ParamInfos<'a> ⓘ
helper to get the infos with only a material https://stereokit.net/Pages/StereoKit/Material/GetAllParamInfo.html
material
- the material to get the param info from.
see also Material::get_all_param_info
§Examples
use stereokit_rust::material::{Material, MaterialParam, ParamInfos};
let mut material_cube = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = ParamInfos::from(&material_cube);
assert!(param_infos.has_param("line_color", MaterialParam::Vec3), "line_color is missing");
assert_eq!(param_infos.get_float("edge_pos"), 1.5);
Sourcepub fn has_param<S: AsRef<str>>(&self, name: S, type_: MaterialParam) -> bool
pub fn has_param<S: AsRef<str>>(&self, name: S, type_: MaterialParam) -> bool
Only way to see if a shader has a given parameter if you do not iterate over parameters. https://stereokit.net/Pages/StereoKit/Material.html
name
: The name of the parameter to check for.
see also material_has_param
§Examples
use stereokit_rust::material::{Material, MaterialParam, ParamInfos};
let mut material_cube = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = ParamInfos::from(&material_cube);
assert!(param_infos.has_param("line_color", MaterialParam::Vec3), "line_color is missing");
assert!(param_infos.has_param("edge_pos", MaterialParam::Float), "edge_pos is missing");
Sourcepub unsafe fn set_data<S: AsRef<str>>(
&mut self,
name: S,
type_info: MaterialParam,
value: *mut c_void,
) -> &mut Self
pub unsafe fn set_data<S: AsRef<str>>( &mut self, name: S, type_info: MaterialParam, value: *mut c_void, ) -> &mut Self
This allows you to set more complex shader data types such as structs. Note the SK doesn’t guard against setting
data of the wrong size here, so pay extra attention to the size of your data here, and ensure it matched up with
the shader! Consider using ParamInfos::set_data_with_id
if you have to change the data type often (i.e. in
the main loop).
https://stereokit.net/Pages/StereoKit/Material/SetData.html
name
- The name of the parameter to settype_info
- The type of the data being set.value
- A pointer to the data being set.
see also material_set_param
ParamInfos::set_data_with_id
§Safety
Be sure of the data you want to modify this way.
§Examples
use stereokit_rust::material::{Material, MaterialParam};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
// an odd way to do : material.color_tint(...);
let mut new_color: std::vec::Vec<f32> = vec![1.0, 0.5, 0.2, 1.0];
unsafe{
param_infos.set_data("color", MaterialParam::Color128,
new_color.as_ptr() as *mut std::ffi::c_void);
}
assert_eq!( param_infos.get_color("color"),
util::Color128::new(1.0, 0.5, 0.2, 1.0));
Sourcepub unsafe fn set_data_with_id(
&mut self,
id: IdHashT,
type_info: MaterialParam,
value: *mut c_void,
) -> &mut Self
pub unsafe fn set_data_with_id( &mut self, id: IdHashT, type_info: MaterialParam, value: *mut c_void, ) -> &mut Self
Add an info value (identified with an id) to the shader of this material. Be sure of using a pointer ‘value’ corresponding to the right type ‘type_info’ https://stereokit.net/Pages/StereoKit/Material/SetData.html
id
- the hash_fnv64_string value of the name of the parameter.type_info
- the type of the parameter you want to set.value
- a pointer to the data you want to set.
see also material_set_param_id
ParamInfos::set_data
§Safety
Be sure of the data you want to modify this way.
§Examples
use stereokit_rust::{material::{Material, MaterialParam, Cull},
mesh::Mesh, maths::{Vec3, Vec4, Matrix}, util::Hash};
let cube = Mesh::cube();
let mut material_cube = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
material_cube.face_cull(Cull::Front).tex_transform(Vec4::new(0.0, 0.0, 0.04, 0.04));
let mut param_infos = material_cube.get_all_param_info();
// an odd way to do : material.color_tint(...);
let mut new_color: std::vec::Vec<f32> = vec![0.2, 0.2, 0.9, 1.0];
let hash_color = Hash::string("color");
filename_scr = "screenshots/param_infos_with_id.jpeg";
test_screenshot!( // !!!! Get a proper main loop !!!!
unsafe{
param_infos.set_data_with_id(hash_color, MaterialParam::Color128,
new_color.as_ptr() as *mut std::ffi::c_void);
}
cube.draw(token, &material_cube, Matrix::IDENTITY, None, None);
);

Sourcepub fn set_bool<S: AsRef<str>>(&mut self, name: S, value: bool) -> &mut Self
pub fn set_bool<S: AsRef<str>>(&mut self, name: S, value: bool) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetBool.html
name
- Name of the shader parameter.value
- The new value to set.
see also material_set_bool
§Examples
use stereokit_rust::material::{Material, MaterialParam};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
param_infos.set_bool("use_occlusion", true);
assert_eq!( param_infos.get_bool("use_occlusion"),true);
Sourcepub fn set_color<S: AsRef<str>>(
&mut self,
name: S,
color_gamma: impl Into<Color128>,
) -> &mut Self
pub fn set_color<S: AsRef<str>>( &mut self, name: S, color_gamma: impl Into<Color128>, ) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetColor.html
name
- Name of the shader parameter.color_gamma
- The gamma space color for the shader to use.
see also material_set_color
§Examples
use stereokit_rust::{material::{Material, MaterialParam},util::Color128};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
let new_color = Color128::new(1.0, 0.5, 0.2, 1.0);
// same as Material::color_tint(new_color);
param_infos.set_color("color", new_color);
assert_eq!( param_infos.get_color("color"),new_color.to_linear() );
Sourcepub fn set_float<S: AsRef<str>>(&mut self, name: S, value: f32) -> &mut Self
pub fn set_float<S: AsRef<str>>(&mut self, name: S, value: f32) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetFloat.html
name
- The name of the parameter to set.value
- The value to set for the parameter.
see also material_set_float
§Examples
use stereokit_rust::material::{Material, MaterialParam};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
param_infos.set_float("edge_pos", 0.18);
assert_eq!( param_infos.get_float("edge_pos"), 0.18);
Sourcepub fn set_int<S: AsRef<str>>(&mut self, name: S, values: &[i32]) -> &mut Self
pub fn set_int<S: AsRef<str>>(&mut self, name: S, values: &[i32]) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetInt.html
name
- the name of the parameter to setvalue
- up to 4 integer values
see also material_set_int
see also material_set_int2
see also material_set_int3
see also material_set_int4
§Examples
use stereokit_rust::material::{Material, MaterialParam};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
let new_factors = vec![302,50,20,10];
param_infos.set_int("size_factors", new_factors.as_slice());
assert_eq!( param_infos.get_int_vector("size_factors", MaterialParam::Int4).unwrap(), new_factors);
Sourcepub fn set_uint<S: AsRef<str>>(&mut self, name: S, values: &[u32]) -> &mut Self
pub fn set_uint<S: AsRef<str>>(&mut self, name: S, values: &[u32]) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! Warning, this may work on Int values as you can see in the examples. https://stereokit.net/Pages/StereoKit/Material/SetUInt.html
name
- the name of the parameter to setvalue
: up to 4 unsigned integer values
see also material_set_uint
see also material_set_uint2
see also material_set_uint3
see also material_set_uint4
§Examples
use stereokit_rust::material::{Material, MaterialParam};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
assert_eq!( param_infos.get_uint_vector("size_factors", MaterialParam::UInt4).unwrap(), vec![300, 4294967196, 50, 25]);
let new_factors = vec![303,502,201,100];
param_infos.set_uint("size_factors", new_factors.as_slice());
assert!( param_infos.has_param("size_factors", MaterialParam::UInt4),"size_factors should be here");
assert_eq!( param_infos.get_uint_vector("size_factors", MaterialParam::UInt4).unwrap(), new_factors);
Sourcepub fn set_matrix<S: AsRef<str>>(
&mut self,
name: S,
value: impl Into<Matrix>,
) -> &mut Self
pub fn set_matrix<S: AsRef<str>>( &mut self, name: S, value: impl Into<Matrix>, ) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetMatrix.html
name
- The name of the parameter to set.value
- The Matrix to set for the parameter.
see also material_set_matrix
§Examples
use stereokit_rust::{material::{Material, MaterialParam}, maths::{Vec3, Matrix}};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
assert_eq!( param_infos.get_matrix("useless"), Matrix::NULL );
let new_matrix = Matrix::t( Vec3::new(1.0, 2.0, 3.0));
param_infos.set_matrix("useless", new_matrix);
assert!( param_infos.has_param("useless", MaterialParam::Matrix),"size_factors should be here");
assert_eq!( param_infos.get_matrix("useless"), new_matrix);
Sourcepub fn set_texture<S: AsRef<str>>(
&mut self,
name: S,
value: impl AsRef<Tex>,
) -> &mut Self
pub fn set_texture<S: AsRef<str>>( &mut self, name: S, value: impl AsRef<Tex>, ) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetTexture.html
name
- the name of the parameter to setvalue
- the Tex to set for the parameter
see also material_set_texture
§Examples
use stereokit_rust::{material::{Material, MaterialParam}, tex::{Tex}};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
assert_ne!( param_infos.get_texture("metal").unwrap(), Tex::default() );
let metal_tex = Tex::from_file("textures/open_gltf.jpeg", true, None)
.expect("tex should be created");
param_infos.set_texture("metal", &metal_tex);
assert_eq!( param_infos.get_texture("metal").unwrap(), metal_tex );
Sourcepub fn set_vector2<S: AsRef<str>>(
&mut self,
name: S,
value: impl Into<Vec2>,
) -> &mut Self
pub fn set_vector2<S: AsRef<str>>( &mut self, name: S, value: impl Into<Vec2>, ) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetVector.html
name
- the name of the parameter to setvalue
- the Vec2 to set for the parameter
see also material_set_vector2
§Examples
use stereokit_rust::{material::{Material, MaterialParam}, maths::Vec2};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
assert_eq!( param_infos.get_vector2("edge_limit"), Vec2::new(0.1, 0.9) );
let new_vec2 = Vec2::new(0.15, 0.85);
param_infos.set_vector2("edge_limit", new_vec2);
assert_eq!( param_infos.get_vector2("edge_limit"), new_vec2);
Sourcepub fn set_vector3<S: AsRef<str>>(
&mut self,
name: S,
value: impl Into<Vec3>,
) -> &mut Self
pub fn set_vector3<S: AsRef<str>>( &mut self, name: S, value: impl Into<Vec3>, ) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetVector.html
name
- the name of the parameter to setvalue
- the Vec3 to set for the parameter
see also material_set_vector2
§Examples
use stereokit_rust::{material::{Material, MaterialParam}, maths::Vec3};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
assert_eq!( param_infos.get_vector3("line_color"), Vec3::new(0.84, 0.84, 0.84) );
let new_vec3 = Vec3::new(0.75, 0.75, 0.75);
param_infos.set_vector3("line_color", new_vec3);
assert_eq!( param_infos.get_vector3("line_color"), new_vec3);
Sourcepub fn set_vector4<S: AsRef<str>>(
&mut self,
name: S,
value: impl Into<Vec4>,
) -> &mut Self
pub fn set_vector4<S: AsRef<str>>( &mut self, name: S, value: impl Into<Vec4>, ) -> &mut Self
Sets a shader parameter with the given name to the provided value. If no parameter is found, nothing happens, and the value is not set! https://stereokit.net/Pages/StereoKit/Material/SetVector.html
name
- The name of the parameter to set.value
- the Vec4 to set for the parameter
see also material_set_vector4
§Examples
use stereokit_rust::{material::Material, maths::Vec4};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
assert_eq!( param_infos.get_vector4("tex_trans"), Vec4::new(0.0, 0.0, 0.1,0.1) );
let new_vec4 = Vec4::new(0.0, 0.0, 0.75, 0.75);
// same as material.tex_transform(new_vec4)
param_infos.set_vector4("tex_trans", new_vec4);
assert_eq!( param_infos.get_vector4("tex_trans"), new_vec4);
Sourcepub fn get_bool<S: AsRef<str>>(&self, name: S) -> bool
pub fn get_bool<S: AsRef<str>>(&self, name: S) -> bool
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of ‘false’ will be returned. https://stereokit.net/Pages/StereoKit/Material/GetBool.html
name
- The name of the shader parameter to get.
see also material_get_bool
see example in ParamInfos::set_bool
Sourcepub fn get_float<S: AsRef<str>>(&self, name: S) -> f32
pub fn get_float<S: AsRef<str>>(&self, name: S) -> f32
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of ‘0’ will be returned. https://stereokit.net/Pages/StereoKit/Material/GetFloat.html
name
- The name of the shader parameter to get.
see also material_get_float
see example in ParamInfos::set_float
Sourcepub fn get_vector2<S: AsRef<str>>(&self, name: S) -> Vec2
pub fn get_vector2<S: AsRef<str>>(&self, name: S) -> Vec2
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of Vec2::ZERO will be returned. https://stereokit.net/Pages/StereoKit/Material/GetVector2.html
name
- The name of the shader parameter to get.
see also material_get_vector2
see example in ParamInfos::set_vector2
Sourcepub fn get_vector3<S: AsRef<str>>(&self, name: S) -> Vec3
pub fn get_vector3<S: AsRef<str>>(&self, name: S) -> Vec3
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of Vec3::ZERO will be returned. https://stereokit.net/Pages/StereoKit/Material/GetVector3.html
name
- The name of the shader parameter to get.
see also material_get_vector3
see example in ParamInfos::set_vector3
Sourcepub fn get_vector4<S: AsRef<str>>(&self, name: S) -> Vec4
pub fn get_vector4<S: AsRef<str>>(&self, name: S) -> Vec4
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of Vec4::ZERO will be returned. https://stereokit.net/Pages/StereoKit/Material/GetVector4.html
name
- The name of the shader parameter to get.
see also material_get_vector4
see example in ParamInfos::set_vector4
Sourcepub fn get_color<S: AsRef<str>>(&self, name: S) -> Color128
pub fn get_color<S: AsRef<str>>(&self, name: S) -> Color128
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of Color128::WHITE will be returned. Warning: This function returns a gamma color. https://stereokit.net/Pages/StereoKit/Material/GetColor.html
name
- The name of the shader parameter to get.
see also material_get_color
see example in ParamInfos::set_color
Sourcepub fn get_int<S: AsRef<str>>(&self, name: S) -> i32
pub fn get_int<S: AsRef<str>>(&self, name: S) -> i32
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of ‘0’ will be returned. https://stereokit.net/Pages/StereoKit/Material/GetInt.html
name
- The name of the shader parameter to get.
see also [material_get_int] see example in [
ParamInfos::set_int`]
Sourcepub fn get_int_vector<S: AsRef<str>>(
&self,
name: S,
type_info: MaterialParam,
) -> Option<Vec<i32>>
pub fn get_int_vector<S: AsRef<str>>( &self, name: S, type_info: MaterialParam, ) -> Option<Vec<i32>>
Get int vector using unsafe material_get_param function
name
- The name of the shader parameter to get.type_info
- The type of the shader parameter to get: Int, Int2, Int3 or Int4
see example in ParamInfos::set_int
Sourcepub fn get_uint<S: AsRef<str>>(&self, name: S) -> u32
pub fn get_uint<S: AsRef<str>>(&self, name: S) -> u32
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of ‘0’ will be returned. https://stereokit.net/Pages/StereoKit/Material/GetUInt.html
name
- The name of the shader parameter to get.
see also material_get_uint
see example in ParamInfos::set_uint
Sourcepub fn get_uint_vector<S: AsRef<str>>(
&self,
name: S,
type_info: MaterialParam,
) -> Option<Vec<u32>>
pub fn get_uint_vector<S: AsRef<str>>( &self, name: S, type_info: MaterialParam, ) -> Option<Vec<u32>>
Get uint vector using unsafe material_get_param function
name
- The name of the shader parameter to get.- type_info - The type of the shader parameter to get: UInt, UInt2, UInt3, UInt4.
see example in ParamInfos::set_uint
Sourcepub fn get_matrix<S: AsRef<str>>(&self, name: S) -> Matrix
pub fn get_matrix<S: AsRef<str>>(&self, name: S) -> Matrix
Gets the value of a shader parameter with the given name. If no parameter is found, a default value of Matrix.Identity will be returned. https://stereokit.net/Pages/StereoKit/Material/GetMatrix.html
name
- The name of the parameter to get.
see also material_get_matrix
see example in ParamInfos::set_matrix
Sourcepub fn get_texture<S: AsRef<str>>(&self, name: S) -> Option<Tex>
pub fn get_texture<S: AsRef<str>>(&self, name: S) -> Option<Tex>
Gets the value of a shader parameter with the given name. If no parameter is found,None will be returned. https://stereokit.net/Pages/StereoKit/Material/GetTexture.html
name
- The name of the parameter to get.
see also material_get_texture
see example in ParamInfos::set_texture
Sourcepub fn get_data<S: AsRef<str>>(
&self,
name: S,
type_info: MaterialParam,
) -> Option<*mut c_void>
pub fn get_data<S: AsRef<str>>( &self, name: S, type_info: MaterialParam, ) -> Option<*mut c_void>
Get an info value of the shader of this material https://stereokit.net/Pages/StereoKit/Material.html
name
- The name of the parameter to get.type_info
- The type of the parameter to get.
see also ParamInfo
material_get_param
§Examples
use stereokit_rust::material::{Material, MaterialParam};
let mut material = Material::from_file("shaders/brick_pbr.hlsl.sks", None).unwrap();
let mut param_infos = material.get_all_param_info();
if let Some(out_value) = param_infos.get_data("size_factors", MaterialParam::Int4) {
let vec4 = unsafe { std::ptr::read(out_value as *const [i32; 4]).to_vec() };
assert_eq!( vec4, vec![300,-100,50,25] );
} else { panic!("Failed to size_factors Int4");}
Sourcepub fn get_data_with_id(
&self,
id: IdHashT,
type_info: MaterialParam,
) -> Option<*mut c_void>
pub fn get_data_with_id( &self, id: IdHashT, type_info: MaterialParam, ) -> Option<*mut c_void>
Get an info value (identified with an id) of the shader of this material https://stereokit.net/Pages/StereoKit/Material.html
id
- thecrate::util::Hash::string
value of the name of the parameter.type_info
- the type of the parameter.
Returns a pointer to the value that will be filled in if the parameter is found.
see also ParamInfo
material_get_param_id
ParamInfos::set_data_with_id
Sourcepub fn get_count(&self) -> i32
pub fn get_count(&self) -> i32
Get the number of infos for this node https://stereokit.net/Pages/StereoKit/Material/ParamCount.html
see also material_get_param_count
§Examples
use stereokit_rust::material::Material;
let mut material = Material::unlit();
let mut param_infos = material.get_all_param_info();
assert_eq!( param_infos.get_count(), 3);
Sourcepub fn string_of(&self, info: &ParamInfo) -> String
pub fn string_of(&self, info: &ParamInfo) -> String
Get the string value of the given ParamInfo
§Examples
use stereokit_rust::material::Material;
let mut material = Material::unlit();
let mut param_infos_iter = material.get_all_param_info();
let mut param_infos = material.get_all_param_info();
for param in param_infos_iter {
match (param.get_name()) {
"color" =>
assert_eq!(param_infos.string_of(¶m), "r:1, g:1, b:1, a:1"),
"tex_trans" =>
assert_eq!(param_infos.string_of(¶m), "[x:0, y:0, z:1, w:1]"),
"diffuse" =>
assert_eq!(param_infos.string_of(¶m), "Texture data..."),
otherwise =>
panic!("Unknown param type: {}", otherwise)
}
}
Trait Implementations§
Source§impl Iterator for ParamInfos<'_>
impl Iterator for ParamInfos<'_>
Source§fn next(&mut self) -> Option<Self::Item>
fn next(&mut self) -> Option<Self::Item>
get all the param info
see also material_get_param_info
material_get_param_count
material_get_param
Source§fn next_chunk<const N: usize>(
&mut self,
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
Self: Sized,
fn next_chunk<const N: usize>(
&mut self,
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
Self: Sized,
iter_next_chunk
)N
values. Read more1.0.0 · Source§fn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
1.0.0 · Source§fn count(self) -> usizewhere
Self: Sized,
fn count(self) -> usizewhere
Self: Sized,
1.0.0 · Source§fn last(self) -> Option<Self::Item>where
Self: Sized,
fn last(self) -> Option<Self::Item>where
Self: Sized,
Source§fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by
)n
elements. Read more1.0.0 · Source§fn nth(&mut self, n: usize) -> Option<Self::Item>
fn nth(&mut self, n: usize) -> Option<Self::Item>
n
th element of the iterator. Read more1.28.0 · Source§fn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
1.0.0 · Source§fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
1.0.0 · Source§fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where
Self: Sized,
U: IntoIterator,
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where
Self: Sized,
U: IntoIterator,
Source§fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
iter_intersperse
)separator
between adjacent items of the original iterator. Read more1.0.0 · Source§fn map<B, F>(self, f: F) -> Map<Self, F>
fn map<B, F>(self, f: F) -> Map<Self, F>
1.0.0 · Source§fn filter<P>(self, predicate: P) -> Filter<Self, P>
fn filter<P>(self, predicate: P) -> Filter<Self, P>
1.0.0 · Source§fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
1.0.0 · Source§fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
1.0.0 · Source§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
1.0.0 · Source§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
1.57.0 · Source§fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
1.0.0 · Source§fn skip(self, n: usize) -> Skip<Self>where
Self: Sized,
fn skip(self, n: usize) -> Skip<Self>where
Self: Sized,
n
elements. Read more1.0.0 · Source§fn take(self, n: usize) -> Take<Self>where
Self: Sized,
fn take(self, n: usize) -> Take<Self>where
Self: Sized,
n
elements, or fewer
if the underlying iterator ends sooner. Read more1.0.0 · Source§fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
Source§fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
iter_map_windows
)f
for each contiguous window of size N
over
self
and returns an iterator over the outputs of f
. Like slice::windows()
,
the windows during mapping overlap as well. Read more1.0.0 · Source§fn inspect<F>(self, f: F) -> Inspect<Self, F>
fn inspect<F>(self, f: F) -> Inspect<Self, F>
1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Iterator
. Read moreSource§fn collect_into<E>(self, collection: &mut E) -> &mut E
fn collect_into<E>(self, collection: &mut E) -> &mut E
iter_collect_into
)1.0.0 · Source§fn partition<B, F>(self, f: F) -> (B, B)
fn partition<B, F>(self, f: F) -> (B, B)
Source§fn is_partitioned<P>(self, predicate: P) -> bool
fn is_partitioned<P>(self, predicate: P) -> bool
iter_is_partitioned
)true
precede all those that return false
. Read more1.27.0 · Source§fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
1.27.0 · Source§fn try_for_each<F, R>(&mut self, f: F) -> R
fn try_for_each<F, R>(&mut self, f: F) -> R
1.0.0 · Source§fn fold<B, F>(self, init: B, f: F) -> B
fn fold<B, F>(self, init: B, f: F) -> B
1.51.0 · Source§fn reduce<F>(self, f: F) -> Option<Self::Item>
fn reduce<F>(self, f: F) -> Option<Self::Item>
Source§fn try_reduce<R>(
&mut self,
f: impl FnMut(Self::Item, Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
fn try_reduce<R>( &mut self, f: impl FnMut(Self::Item, Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
iterator_try_reduce
)1.0.0 · Source§fn all<F>(&mut self, f: F) -> bool
fn all<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn any<F>(&mut self, f: F) -> bool
fn any<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
1.30.0 · Source§fn find_map<B, F>(&mut self, f: F) -> Option<B>
fn find_map<B, F>(&mut self, f: F) -> Option<B>
Source§fn try_find<R>(
&mut self,
f: impl FnMut(&Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
try_find
)1.0.0 · Source§fn position<P>(&mut self, predicate: P) -> Option<usize>
fn position<P>(&mut self, predicate: P) -> Option<usize>
1.6.0 · Source§fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn max_by<F>(self, compare: F) -> Option<Self::Item>
fn max_by<F>(self, compare: F) -> Option<Self::Item>
1.6.0 · Source§fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn min_by<F>(self, compare: F) -> Option<Self::Item>
fn min_by<F>(self, compare: F) -> Option<Self::Item>
1.0.0 · Source§fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
1.36.0 · Source§fn copied<'a, T>(self) -> Copied<Self>
fn copied<'a, T>(self) -> Copied<Self>
Source§fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where
Self: Sized,
fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where
Self: Sized,
iter_array_chunks
)N
elements of the iterator at a time. Read more1.11.0 · Source§fn product<P>(self) -> P
fn product<P>(self) -> P
Source§fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
iter_order_by
)Iterator
with those
of another with respect to the specified comparison function. Read more1.5.0 · Source§fn partial_cmp<I>(self, other: I) -> Option<Ordering>
fn partial_cmp<I>(self, other: I) -> Option<Ordering>
PartialOrd
elements of
this Iterator
with those of another. The comparison works like short-circuit
evaluation, returning a result without comparing the remaining elements.
As soon as an order can be determined, the evaluation stops and a result is returned. Read moreSource§fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
iter_order_by
)Iterator
with those
of another with respect to the specified comparison function. Read moreSource§fn eq_by<I, F>(self, other: I, eq: F) -> bool
fn eq_by<I, F>(self, other: I, eq: F) -> bool
iter_order_by
)1.5.0 · Source§fn lt<I>(self, other: I) -> bool
fn lt<I>(self, other: I) -> bool
Iterator
are lexicographically
less than those of another. Read more1.5.0 · Source§fn le<I>(self, other: I) -> bool
fn le<I>(self, other: I) -> bool
Iterator
are lexicographically
less or equal to those of another. Read more1.5.0 · Source§fn gt<I>(self, other: I) -> bool
fn gt<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than those of another. Read more1.5.0 · Source§fn ge<I>(self, other: I) -> bool
fn ge<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than or equal to those of another. Read more1.82.0 · Source§fn is_sorted_by<F>(self, compare: F) -> bool
fn is_sorted_by<F>(self, compare: F) -> bool
1.82.0 · Source§fn is_sorted_by_key<F, K>(self, f: F) -> bool
fn is_sorted_by_key<F, K>(self, f: F) -> bool
Auto Trait Implementations§
impl<'a> Freeze for ParamInfos<'a>
impl<'a> RefUnwindSafe for ParamInfos<'a>
impl<'a> !Send for ParamInfos<'a>
impl<'a> !Sync for ParamInfos<'a>
impl<'a> Unpin for ParamInfos<'a>
impl<'a> UnwindSafe for ParamInfos<'a>
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.