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

Method import_interface

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

Source from the content-addressed store, hash-verified

1250 }
1251
1252 fn import_interface(
1253 &mut self,
1254 resolve: &Resolve,
1255 name: &WorldKey,
1256 id: InterfaceId,
1257 _files: &mut Files,
1258 ) -> Result<()> {
1259 let mut to_define = Vec::new();
1260 for (name, ty_id) in resolve.interfaces[id].types.iter() {
1261 let full_name = full_wit_type_name(resolve, *ty_id);
1262 if let Some(type_gen) = self.with.get(&full_name) {
1263 // skip type definition generation for remapped types
1264 if type_gen.generated() {
1265 to_define.push((name, ty_id));
1266 }
1267 } else {
1268 to_define.push((name, ty_id));
1269 }
1270 self.generated_types.insert(full_name);
1271 }
1272
1273 let wasm_import_module = resolve.name_world_key(name);
1274 let mut r#gen = self.interface(
1275 Identifier::Interface(id, name),
1276 &wasm_import_module,
1277 resolve,
1278 true,
1279 );
1280 let (snake, module_path) = r#gen.start_append_submodule(name);
1281 if r#gen.r#gen.interface_names[&id].remapped {
1282 return Ok(());
1283 }
1284
1285 for (name, ty_id) in to_define {
1286 r#gen.define_type(&name, *ty_id);
1287 }
1288
1289 r#gen.generate_imports(resolve.interfaces[id].functions.values(), Some(name));
1290
1291 let docs = &resolve.interfaces[id].docs;
1292
1293 r#gen.finish_append_submodule(&snake, module_path, docs);
1294
1295 Ok(())
1296 }
1297
1298 fn import_funcs(
1299 &mut self,

Callers

nothing calls this directly

Calls 12

newFunction · 0.85
full_wit_type_nameFunction · 0.85
generatedMethod · 0.80
generate_importsMethod · 0.80
iterMethod · 0.45
getMethod · 0.45
pushMethod · 0.45
insertMethod · 0.45
interfaceMethod · 0.45
define_typeMethod · 0.45

Tested by

no test coverage detected