/// A core instance defined by instantiation or exporting core items. #[derive(Debug)] pubstruct CoreInstance<'a> { /// Where this `core instance` was defined. pub span: Span, /// An identifier that this instance is resolved with (optionally) for name /// resolution. pub id: Option<Id<'a>>, /// An optional name for this instance stored in the custom `name` section. pub name: Option<NameAnnotation<'a>>, /// What kind of instance this is. pub kind: CoreInstanceKind<'a>,
}
impl<'a> Parse<'a> for CoreInstance<'a> { fn parse(parser: Parser<'a>) -> Result<Self> { let span = parser.parse::<kw::core>()?.0;
parser.parse::<kw::instance>()?; let id = parser.parse()?; let name = parser.parse()?; let kind = parser.parse()?;
Ok(Self {
span,
id,
name,
kind,
})
}
}
/// The kinds of core instances in the text format. #[derive(Debug)] pubenum CoreInstanceKind<'a> { /// Instantiate a core module.
Instantiate { /// The module being instantiated.
module: ItemRef<'a, kw::module>, /// Arguments used to instantiate the instance.
args: Vec<CoreInstantiationArg<'a>>,
}, /// The instance is defined by exporting local items as an instance.
BundleOfExports(Vec<CoreInstanceExport<'a>>),
}
/// An argument to instantiate a core module. #[derive(Debug)] pubstruct CoreInstantiationArg<'a> { /// The name of the instantiation argument. pub name: &'a str, /// The kind of core instantiation argument. pub kind: CoreInstantiationArgKind<'a>,
}
/// The kind of core instantiation argument. #[derive(Debug)] pubenum CoreInstantiationArgKind<'a> { /// The argument is a reference to an instance.
Instance(CoreItemRef<'a, kw::instance>), /// The argument is an instance created from local exported core items. /// /// This is syntactic sugar for defining a core instance and also using it /// as an instantiation argument.
BundleOfExports(Span, Vec<CoreInstanceExport<'a>>),
}
/// An exported item as part of a core instance. #[derive(Debug)] pubstruct CoreInstanceExport<'a> { /// Where this export was defined. pub span: Span, /// The name of this export from the instance. pub name: &'a str, /// What's being exported from the instance. pub item: CoreItemRef<'a, core::ExportKind>,
}
/// A component instance defined by instantiation or exporting items. #[derive(Debug)] pubstruct Instance<'a> { /// Where this `instance` was defined. pub span: Span, /// An identifier that this instance is resolved with (optionally) for name /// resolution. pub id: Option<Id<'a>>, /// An optional name for this instance stored in the custom `name` section. pub name: Option<NameAnnotation<'a>>, /// If present, inline export annotations which indicate names this /// definition should be exported under. pub exports: InlineExport<'a>, /// What kind of instance this is. pub kind: InstanceKind<'a>,
}
impl<'a> Parse<'a> for Instance<'a> { fn parse(parser: Parser<'a>) -> Result<Self> { let span = parser.parse::<kw::instance>()?.0; let id = parser.parse()?; let name = parser.parse()?; let exports = parser.parse()?; let kind = parser.parse()?;
Ok(Self {
span,
id,
name,
exports,
kind,
})
}
}
/// The kinds of instances in the text format. #[derive(Debug)] pubenum InstanceKind<'a> { /// The `(instance (import "x"))` sugar syntax
Import { /// The name of the import
import: InlineImport<'a>, /// The type of the instance being imported
ty: ComponentTypeUse<'a, InstanceType<'a>>,
}, /// Instantiate a component.
Instantiate { /// The component being instantiated.
component: ItemRef<'a, kw::component>, /// Arguments used to instantiate the instance.
args: Vec<InstantiationArg<'a>>,
}, /// The instance is defined by exporting local items as an instance.
BundleOfExports(Vec<ComponentExport<'a>>),
}
/// An argument to instantiate a component. #[derive(Debug)] pubstruct InstantiationArg<'a> { /// The name of the instantiation argument. pub name: &'a str, /// The kind of instantiation argument. pub kind: InstantiationArgKind<'a>,
}
/// The kind of instantiation argument. #[derive(Debug)] pubenum InstantiationArgKind<'a> { /// The argument is a reference to a component item.
Item(ComponentExportKind<'a>), /// The argument is an instance created from local exported items. /// /// This is syntactic sugar for defining an instance and also using it /// as an instantiation argument.
BundleOfExports(Span, Vec<ComponentExport<'a>>),
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.