MCPcopy Create free account
hub / github.com/bytecodealliance/wit-bindgen / export

Method export

crates/go/src/lib.rs:1232–1405  ·  view source on GitHub ↗
(
        &mut self,
        resolve: &Resolve,
        func: &Function,
        interface: Option<&WorldKey>,
    )

Source from the content-addressed store, hash-verified

1230 }
1231
1232 fn export(
1233 &mut self,
1234 resolve: &Resolve,
1235 func: &Function,
1236 interface: Option<&WorldKey>,
1237 ) -> String {
1238 self.visit_futures_and_streams(false, resolve, func, interface);
1239
1240 let async_ = self.opts.async_.is_async(resolve, interface, func, false);
1241
1242 let (variant, prefix) = if async_ {
1243 (AbiVariant::GuestExportAsync, "[async-lift]")
1244 } else {
1245 (AbiVariant::GuestExport, "")
1246 };
1247
1248 let sig = resolve.wasm_signature(variant, func);
1249 let core_module_name = interface.map(|v| resolve.name_world_key(v));
1250 let export_name = func.legacy_core_export_name(core_module_name.as_deref());
1251 let name = self.func_name(resolve, interface, func);
1252
1253 let params = sig
1254 .params
1255 .iter()
1256 .enumerate()
1257 .map(|(i, param)| format!("arg{i} {}", wasm_type(*param)))
1258 .collect::<Vec<_>>()
1259 .join(", ");
1260
1261 let results = match &sig.results[..] {
1262 [] => "",
1263 [result] => wasm_type(*result),
1264 _ => unreachable!(),
1265 };
1266
1267 let unpin_params =
1268 sig.indirect_params || abi::guest_export_params_have_allocations(resolve, func);
1269
1270 let param_names = (0..sig.params.len()).map(|i| format!("arg{i}")).collect();
1271 let mut generator = FunctionGenerator::new(
1272 self,
1273 Some(&name),
1274 interface,
1275 None,
1276 "INVALID",
1277 param_names,
1278 unpin_params,
1279 false,
1280 );
1281 abi::call(
1282 resolve,
1283 variant,
1284 LiftLower::LiftArgsLowerResults,
1285 func,
1286 &mut generator,
1287 async_,
1288 );
1289 let code = generator.src;

Callers 2

export_interfaceMethod · 0.45
export_funcsMethod · 0.45

Calls 15

newFunction · 0.85
callFunction · 0.85
remote_pkgFunction · 0.85
func_declarationFunction · 0.85
mapMethod · 0.80
func_nameMethod · 0.80
joinMethod · 0.80
collectMethod · 0.80
extendMethod · 0.80

Tested by

no test coverage detected