MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / generate_function_trait_sig

Method generate_function_trait_sig

crates/wit-bindgen/src/lib.rs:2893–2923  ·  view source on GitHub ↗
(&mut self, func: &Function, flags: FunctionFlags)

Source from the content-addressed store, hash-verified

2891 }
2892
2893 fn generate_function_trait_sig(&mut self, func: &Function, flags: FunctionFlags) {
2894 let wt = self.generator.wasmtime_path();
2895 self.rustdoc(&func.docs);
2896
2897 self.push_str("fn ");
2898 self.push_str(&rust_function_name(func));
2899 if flags.contains(FunctionFlags::STORE | FunctionFlags::ASYNC) {
2900 uwrite!(self.src, "(accessor: &{wt}::component::Accessor<T, Self>, ");
2901 } else if flags.contains(FunctionFlags::STORE) {
2902 uwrite!(self.src, "(host: {wt}::component::Access<T, Self>, ");
2903 } else {
2904 self.push_str("(&mut self, ");
2905 }
2906 if let Some(id) = &self.named_import_id {
2907 uwrite!(self.src, "id: {id}, ");
2908 }
2909 self.generate_function_params(func);
2910 self.push_str(")");
2911 self.push_str(" -> ");
2912
2913 if flags.contains(FunctionFlags::ASYNC) {
2914 uwrite!(self.src, "impl ::core::future::Future<Output = ");
2915 }
2916
2917 self.all_func_flags |= flags;
2918 self.generate_function_result(func, flags);
2919
2920 if flags.contains(FunctionFlags::ASYNC) {
2921 self.push_str("> + Send");
2922 }
2923 }
2924
2925 fn generate_function_params(&mut self, func: &Function) {
2926 for param in func.params.iter() {

Callers 1

generate_traitMethod · 0.80

Calls 7

rust_function_nameFunction · 0.85
wasmtime_pathMethod · 0.80
rustdocMethod · 0.80
push_strMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected