Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik