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

Method export_interface

crates/rust/src/lib.rs:1315–1367  ·  view source on GitHub ↗
(
        &mut self,
        resolve: &Resolve,
        name: &WorldKey,
        id: InterfaceId,
        _files: &mut Files,
    )

Source from the content-addressed store, hash-verified

1313 }
1314
1315 fn export_interface(
1316 &mut self,
1317 resolve: &Resolve,
1318 name: &WorldKey,
1319 id: InterfaceId,
1320 _files: &mut Files,
1321 ) -> Result<()> {
1322 let mut to_define = Vec::new();
1323 for (ty_name, ty_id) in resolve.interfaces[id].types.iter() {
1324 let full_name = full_wit_type_name(resolve, *ty_id);
1325 to_define.push((ty_name, ty_id));
1326 self.generated_types.insert(full_name);
1327 }
1328
1329 let wasm_import_module = format!("[export]{}", resolve.name_world_key(name));
1330 let mut r#gen = self.interface(
1331 Identifier::Interface(id, name),
1332 &wasm_import_module,
1333 resolve,
1334 false,
1335 );
1336 let (snake, module_path) = r#gen.start_append_submodule(name);
1337 if r#gen.r#gen.interface_names[&id].remapped {
1338 return Ok(());
1339 }
1340
1341 for (ty_name, ty_id) in to_define {
1342 r#gen.define_type(&ty_name, *ty_id);
1343 }
1344
1345 let macro_name =
1346 r#gen.generate_exports(Some((id, name)), resolve.interfaces[id].functions.values())?;
1347
1348 let docs = &resolve.interfaces[id].docs;
1349
1350 r#gen.finish_append_submodule(&snake, module_path, docs);
1351 self.export_macros
1352 .push((macro_name, self.interface_names[&id].path.clone()));
1353
1354 if self.opts.stubs {
1355 let world_id = self.world.unwrap();
1356 let mut r#gen = self.interface(
1357 Identifier::World(world_id),
1358 &wasm_import_module,
1359 resolve,
1360 false,
1361 );
1362 r#gen.generate_stub(Some((id, name)), resolve.interfaces[id].functions.values());
1363 let stub = r#gen.finish();
1364 self.src.push_str(&stub);
1365 }
1366 Ok(())
1367 }
1368
1369 fn export_funcs(
1370 &mut self,

Callers

nothing calls this directly

Calls 13

newFunction · 0.85
full_wit_type_nameFunction · 0.85
generate_exportsMethod · 0.80
generate_stubMethod · 0.80
iterMethod · 0.45
pushMethod · 0.45
insertMethod · 0.45
interfaceMethod · 0.45
define_typeMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected