pub trait RustGenerator<'a> {
Show 45 methods // Required methods fn resolve(&self) -> &'a Resolve; fn path_to_interface(&self, interface: InterfaceId) -> Option<String>; fn duplicate_if_necessary(&self) -> bool; fn vec_name(&self) -> &'static str; fn string_name(&self) -> &'static str; fn push_str(&mut self, s: &str); fn info(&self, ty: TypeId) -> TypeInfo; fn types_mut(&mut self) -> &mut Types; fn print_borrowed_slice( &mut self, mutbl: bool, ty: &Type, lifetime: &'static str ); fn print_borrowed_str(&mut self, lifetime: &'static str); // Provided methods fn std_feature(&self) -> bool { ... } fn use_raw_strings(&self) -> bool { ... } fn rustdoc(&mut self, docs: &Docs) { ... } fn rustdoc_params(&mut self, docs: &[(String, Type)], header: &str) { ... } fn print_signature( &mut self, func: &Function, param_mode: TypeMode, sig: &FnSig ) -> Vec<String> { ... } fn print_docs_and_params( &mut self, func: &Function, param_mode: TypeMode, sig: &FnSig ) -> Vec<String> { ... } fn print_results(&mut self, results: &Results, mode: TypeMode) { ... } fn print_ty(&mut self, ty: &Type, mode: TypeMode) { ... } fn print_optional_ty(&mut self, ty: Option<&Type>, mode: TypeMode) { ... } fn type_path(&self, id: TypeId, owned: bool) -> String { ... } fn print_tyid(&mut self, id: TypeId, mode: TypeMode) { ... } fn print_list(&mut self, ty: &Type, mode: TypeMode) { ... } fn print_rust_slice( &mut self, mutbl: bool, ty: &Type, lifetime: &'static str ) { ... } fn print_generics(&mut self, lifetime: Option<&str>) { ... } fn int_repr(&mut self, repr: Int) { ... } fn wasm_type(&mut self, ty: WasmType) { ... } fn modes_of(&self, ty: TypeId) -> Vec<(String, TypeMode)> { ... } fn write_name(&self, ty: &Type, out: &mut String) { ... } fn write_optional_name(&self, ty: Option<&Type>, out: &mut String) { ... } fn union_case_names(&self, union: &Union) -> Vec<String> { ... } fn print_typedef_record( &mut self, id: TypeId, record: &Record, docs: &Docs, derive_component: bool ) { ... } fn print_typedef_tuple(&mut self, id: TypeId, tuple: &Tuple, docs: &Docs) { ... } fn print_typedef_variant( &mut self, id: TypeId, variant: &Variant, docs: &Docs, derive_component: bool ) where Self: Sized { ... } fn print_typedef_union( &mut self, id: TypeId, union: &Union, docs: &Docs, derive_component: bool ) where Self: Sized { ... } fn print_rust_enum<'b>( &mut self, id: TypeId, cases: impl IntoIterator<Item = (String, Option<String>, &'b Docs, Option<&'b Type>)> + Clone, docs: &Docs, derive_component: Option<&str> ) where Self: Sized { ... } fn print_rust_enum_debug<'b>( &mut self, id: TypeId, mode: TypeMode, name: &str, cases: impl IntoIterator<Item = (String, Option<&'b Type>)> ) where Self: Sized { ... } fn print_typedef_option(&mut self, id: TypeId, payload: &Type, docs: &Docs) { ... } fn print_typedef_result( &mut self, id: TypeId, result: &Result_, docs: &Docs ) { ... } fn print_typedef_enum( &mut self, id: TypeId, name: &str, enum_: &Enum, docs: &Docs, attrs: &[String], case_attr: Box<dyn Fn(&EnumCase) -> String> ) where Self: Sized { ... } fn print_typedef_alias(&mut self, id: TypeId, ty: &Type, docs: &Docs) { ... } fn print_type_list(&mut self, id: TypeId, ty: &Type, docs: &Docs) { ... } fn param_name(&self, ty: TypeId) -> String { ... } fn result_name(&self, ty: TypeId) -> String { ... } fn uses_two_names(&self, info: &TypeInfo) -> bool { ... } fn lifetime_for( &self, info: &TypeInfo, mode: TypeMode ) -> Option<&'static str> { ... }
}

Required Methods§

source

fn resolve(&self) -> &'a Resolve

source

fn path_to_interface(&self, interface: InterfaceId) -> Option<String>

source

fn duplicate_if_necessary(&self) -> bool

This, if enabled, will possibly cause types to get duplicate copies to get generated of each other. For example a record containing a string used both in the import and export context would get one variant generated for both.

If this is disabled then the import context would require the same type used for the export context, which has an owned string that might not otherwise be necessary.

source

fn vec_name(&self) -> &'static str

Return the fully-qualified name for the Vec type to use.

source

fn string_name(&self) -> &'static str

Return the fully-qualified name for the String type to use.

source

fn push_str(&mut self, s: &str)

source

fn info(&self, ty: TypeId) -> TypeInfo

source

fn types_mut(&mut self) -> &mut Types

source

fn print_borrowed_slice( &mut self, mutbl: bool, ty: &Type, lifetime: &'static str )

source

fn print_borrowed_str(&mut self, lifetime: &'static str)

Provided Methods§

source

fn std_feature(&self) -> bool

Return true iff the generator should qualify uses of std features with #[cfg(feature = "std")] in its output.

source

fn use_raw_strings(&self) -> bool

Return true iff the generator should use &[u8] instead of &str in bindings.

source

fn rustdoc(&mut self, docs: &Docs)

source

fn rustdoc_params(&mut self, docs: &[(String, Type)], header: &str)

source

fn print_signature( &mut self, func: &Function, param_mode: TypeMode, sig: &FnSig ) -> Vec<String>

source

fn print_docs_and_params( &mut self, func: &Function, param_mode: TypeMode, sig: &FnSig ) -> Vec<String>

source

fn print_results(&mut self, results: &Results, mode: TypeMode)

source

fn print_ty(&mut self, ty: &Type, mode: TypeMode)

source

fn print_optional_ty(&mut self, ty: Option<&Type>, mode: TypeMode)

source

fn type_path(&self, id: TypeId, owned: bool) -> String

source

fn print_tyid(&mut self, id: TypeId, mode: TypeMode)

source

fn print_list(&mut self, ty: &Type, mode: TypeMode)

source

fn print_rust_slice(&mut self, mutbl: bool, ty: &Type, lifetime: &'static str)

source

fn print_generics(&mut self, lifetime: Option<&str>)

source

fn int_repr(&mut self, repr: Int)

source

fn wasm_type(&mut self, ty: WasmType)

source

fn modes_of(&self, ty: TypeId) -> Vec<(String, TypeMode)>

source

fn write_name(&self, ty: &Type, out: &mut String)

Writes the camel-cased ‘name’ of the passed type to out, as used to name union variants.

source

fn write_optional_name(&self, ty: Option<&Type>, out: &mut String)

source

fn union_case_names(&self, union: &Union) -> Vec<String>

Returns the names for the cases of the passed union.

source

fn print_typedef_record( &mut self, id: TypeId, record: &Record, docs: &Docs, derive_component: bool )

source

fn print_typedef_tuple(&mut self, id: TypeId, tuple: &Tuple, docs: &Docs)

source

fn print_typedef_variant( &mut self, id: TypeId, variant: &Variant, docs: &Docs, derive_component: bool )where Self: Sized,

source

fn print_typedef_union( &mut self, id: TypeId, union: &Union, docs: &Docs, derive_component: bool )where Self: Sized,

source

fn print_rust_enum<'b>( &mut self, id: TypeId, cases: impl IntoIterator<Item = (String, Option<String>, &'b Docs, Option<&'b Type>)> + Clone, docs: &Docs, derive_component: Option<&str> )where Self: Sized,

source

fn print_rust_enum_debug<'b>( &mut self, id: TypeId, mode: TypeMode, name: &str, cases: impl IntoIterator<Item = (String, Option<&'b Type>)> )where Self: Sized,

source

fn print_typedef_option(&mut self, id: TypeId, payload: &Type, docs: &Docs)

source

fn print_typedef_result(&mut self, id: TypeId, result: &Result_, docs: &Docs)

source

fn print_typedef_enum( &mut self, id: TypeId, name: &str, enum_: &Enum, docs: &Docs, attrs: &[String], case_attr: Box<dyn Fn(&EnumCase) -> String> )where Self: Sized,

source

fn print_typedef_alias(&mut self, id: TypeId, ty: &Type, docs: &Docs)

source

fn print_type_list(&mut self, id: TypeId, ty: &Type, docs: &Docs)

source

fn param_name(&self, ty: TypeId) -> String

source

fn result_name(&self, ty: TypeId) -> String

source

fn uses_two_names(&self, info: &TypeInfo) -> bool

source

fn lifetime_for(&self, info: &TypeInfo, mode: TypeMode) -> Option<&'static str>

Implementors§