Trait naga::back::spv::recyclable::Recyclable
source · pub trait Recyclable {
// Required method
fn recycle(self) -> Self;
}
Expand description
A value that can be reset to its initial state, retaining its current allocations.
Naga attempts to lower the cost of SPIR-V generation by allowing clients to
reuse the same Writer
for multiple Module translations. Reusing a Writer
means that the Vec
s, HashMap
s, and other heap-allocated structures the
Writer
uses internally begin the translation with heap-allocated buffers
ready to use.
But this approach introduces the risk of Writer
state leaking from one
module to the next. When a developer adds fields to Writer
or its internal
types, they must remember to reset their contents between modules.
One trick to ensure that every field has been accounted for is to use Rust’s
struct literal syntax to construct a new, reset value. If a developer adds a
field, but neglects to update the reset code, the compiler will complain
that a field is missing from the literal. This trait’s recycle
method
takes self
by value, and returns Self
by value, encouraging the use of
struct literal expressions in its implementation.