Skip to main content

Config

Struct Config 

Source
pub struct Config { /* private fields */ }
Expand description

Configuration/builder for options for Rust code generation.

This configuration allows you to control syntactic characteristics of the output, and also Rust features that have no equivalent in shader languages.

Implementations§

Source§

impl Config

Source

pub const fn new() -> Self

Creates a Config with default options.

Source

pub fn explicit_types(self, value: bool) -> Self

Sets whether the generated code contains explicit types when they could be omitted.

The default is false.

Source

pub fn raw_pointers(self, value: bool) -> Self

Sets whether the generated code uses raw pointers instead of references.

The resulting code may be unsound if the input module uses pointers incorrectly.

Currently, this does not actually work, in that it generates code which does not even try to unsafely dereference the raw pointers it uses. The exact behavior of this option is not yet decided, but it will likely cause the generated functions to be unsafe fns.

The default is false.

TODO: This should be configurable on a per-function basis.

Source

pub fn public_items(self, value: bool) -> Self

Sets whether generated items have pub visibility instead of private.

This option applies to all functions or methods, and all fields of generated structs.

The default is false.

Source

pub fn allow_unimplemented(self, value: bool) -> Self

Sets whether to allow the generated code to panic on entering code that cannot be translated, rather than failing generation.

This applies to all unsupported expressions and statements, but not to unsupported types.

The default is false.

Source

pub fn runtime_path(self, value: impl Into<Cow<'static, str>>) -> Self

Sets the Rust module path to the runtime support library.

The default is "::naga_rust_rt".

§Panics

May panic if the path is not syntactically valid or not an absolute path.

Source

pub fn global_struct(self, name: impl Into<String>) -> Self

Allow declarations of global variables, generate a struct with the given name to hold them, and make all functions methods of that struct.

The struct has one constructor method, which is declared as either const fn new() or const fn new(resources: &ResourceStructName) depending on whether resource_struct() is also set. If there are no parameters, then it also implements Default.

If this option is not set, shaders may not contain declarations of variables with address spaces private or workgroup.

Source

pub fn resource_struct(self, name: impl Into<String>) -> Self

Allow declarations of resources (e.g. uniforms), generate a struct with the given name to hold them, and, if global_struct() is not also set, make all functions methods of that struct.

If this option is not set, shaders may not contain declarations of variables with address spaces uniform or storage.

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

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

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Config

Source§

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

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

impl Default for Config

Source§

fn default() -> Self

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

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> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

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

Source§

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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