Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/wast/src/component/   (Firefox Browser Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  module.rs

  Sprache: Rust
 

use crate::component::*;
use crate::core;
use crate::kw;
use crate::parser::{Parse, Parser, Result};
use crate::token::{Id, NameAnnotation, Span};

/// A core WebAssembly module to be created as part of a component.
///
/// This is a member of the core module section.
#[derive(Debug)]
pub struct CoreModule<'a> {
    /// Where this `core module` was defined.
    pub span: Span,
    /// An identifier that this module is resolved with (optionally) for name
    /// resolution.
    pub id: Option<Id<'a>>,
    /// An optional name for this module 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 module this is, be it an inline-defined or imported one.
    pub kind: CoreModuleKind<'a>,
}

/// Possible ways to define a core module in the text format.
#[derive(Debug)]
pub enum CoreModuleKind<'a> {
    /// A core module which is actually defined as an import
    Import {
        /// Where this core module is imported from
        import: InlineImport<'a>,
        /// The type that this core module will have.
        ty: CoreTypeUse<'a, ModuleType<'a>>,
    },

    /// Modules that are defined inline.
    Inline {
        /// Fields in the core module.
        fields: Vec<core::ModuleField<'a>>,
    },
}

impl<'a> Parse<'a> for CoreModule<'a> {
    fn parse(parser: Parser<'a>) -> Result<Self> {
        parser.depth_check()?;

        let span = parser.parse::<kw::core>()?.0;
        parser.parse::<kw::module>()?;
        let id = parser.parse()?;
        let name = parser.parse()?;
        let exports = parser.parse()?;

        let kind = if let Some(import) = parser.parse()? {
            CoreModuleKind::Import {
                import,
                ty: parser.parse()?,
            }
        } else {
            let mut fields = Vec::new();
            while !parser.is_empty() {
                fields.push(parser.parens(|p| p.parse())?);
            }
            CoreModuleKind::Inline { fields }
        };

        Ok(Self {
            span,
            id,
            name,
            exports,
            kind,
        })
    }
}

Messung V0.5 in Prozent
C=92 H=99 G=95

¤ Dauer der Verarbeitung: 0.9 Sekunden  (vorverarbeitet am  2026-06-18) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.