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

Method generate_payloads

crates/rust/src/interface.rs:482–522  ·  view source on GitHub ↗
(&mut self, prefix: &str, func: &Function, interface: Option<&WorldKey>)

Source from the content-addressed store, hash-verified

480 }
481
482 fn generate_payloads(&mut self, prefix: &str, func: &Function, interface: Option<&WorldKey>) {
483 let old_identifier = mem::replace(&mut self.identifier, Identifier::StreamOrFuturePayload);
484
485 for (index, ty) in func
486 .find_futures_and_streams(self.resolve)
487 .into_iter()
488 .enumerate()
489 {
490 let module = format!(
491 "{prefix}{}",
492 interface
493 .map(|name| self.resolve.name_world_key(name))
494 .unwrap_or_else(|| "$root".into())
495 );
496 let func_name = &func.name;
497
498 match &self.resolve.types[ty].kind {
499 TypeDefKind::Future(payload_type) => {
500 self.generate_payload(
501 PayloadFor::Future,
502 &module,
503 index,
504 func_name,
505 payload_type.as_ref(),
506 );
507 }
508 TypeDefKind::Stream(payload_type) => {
509 self.generate_payload(
510 PayloadFor::Stream,
511 &module,
512 index,
513 func_name,
514 payload_type.as_ref(),
515 );
516 }
517 _ => unreachable!(),
518 }
519 }
520
521 self.identifier = old_identifier;
522 }
523
524 fn generate_payload(
525 &mut self,

Callers 2

generate_guest_importMethod · 0.80
generate_guest_exportMethod · 0.80

Calls 1

generate_payloadMethod · 0.80

Tested by

no test coverage detected