Struct Generator

Source
pub struct Generator {}
Expand description

A Generator is a data-driven wrapper around code generator implementations, There are two main modes of generation: handlebars template-driven, and code-driven. For the latter, you implement a trait CodeGen, which gets callbacks for various parts of the code generation. One parameter to CodeGen is the output file name, which can be used if code is to be generated across several files. (for example, if you want one file to define interfaces and a separate file to define implementation classe). Handlebars-driven code generation may be more well-suited for files such as Makefiles and project config files that don’t need a huge amount of customization, but they can also be used to generate 100% of an interface. You decide!

Implementations§

Source§

impl<'model> Generator

Source

pub fn gen( &self, model: Option<&'model Model>, config: CodegenConfig, templates: Vec<(String, String)>, output_dir: &Path, defines: Vec<(String, Value)>, ) -> Result<()>

Perform code generation on model, iterating through each configured OutputFile. Each file to be generated is either based on a handlebars template, which is generated with the Renderer class, or is generated by an implemented of the CodeGen implementation. Function parameters:

  • model - the smithy model
  • config - CodeConfig (usually loaded from a codegen.toml file)
    • N.B. all relative paths (template dirs and the output_dir parameter) are adjusted to be relative to config.base_dir.
  • templates - list of additional templates to register with the handlebars engine (The templates parameter of config is ignored. to use a list of file paths, call templates_from_dir() to load them and generate this parameter)
  • output_dir - top-level folder containing all output files
  • create - whether the user intends to create a new project (true) or just update (false). The generator does not check for existence of an output file before overwriting. Usually the create flag is set to true for the first pass when project files are created, after which time the project file can be manually edited, and only the main codegen output will be updated. The default (create is false/the flag is unspecified)) changes the fewest files

Trait Implementations§

Source§

impl Debug for Generator

Source§

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

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

impl Default for Generator

Source§

fn default() -> Generator

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. 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<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> ErasedDestructor for T
where T: 'static,