AUTOSAR_AP_EXP_ARARustApplications
FIG-33ee8788f5e4b3d7
267 × 363 px
2 Release(s)
Figure 6.7: Simple representation of generic trait and implementation
SHA-256 Inhalts-Fingerabdruck:
33ee8788f5e4b3d7028b50a941d2898d9e7ec977380bde59d6f26adab1c4b005
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: UML-Klassendiagramm / Metamodell-Mapping-Profil (AUTOSAR AP Profilierung für die Programmiersprache Rust).
- Technischer Zweck & Einordnung:
- Spezifikation der normativen UML-Repräsentation von idiomatischen Rust-Konstrukten im Rahmen der AUTOSAR Adaptive Platform (
AUTOSAR_AP_EXP_ARARustApplications, R23-11/R24-11). - Formalisierung der Abbildung von Generics, Trait Bounds, Lifetimes, Datenstrukturen (
struct) und Trait-Implementierungen (impl) in Entwurfsmodellen für Adaptive Applications (ara::*Rust-Bindings).
- Spezifikation der normativen UML-Repräsentation von idiomatischen Rust-Konstrukten im Rahmen der AUTOSAR Adaptive Platform (
2. Komponenten, Entitäten & Schnittstellen
- Entitäten:
Module3::Trait1:- Stereotyp:
«Trait»(Modellierung eines Rust-Traits als Interface-Klassifikator). - Modulpfad / Namespace:
Module3. - Template-Parameter / Generics-Box (Dashed Compartment):
T > Into<u64> + Copy– generischer TypparameterTmit zusammengesetztem Trait-Bound (T: Into<u64> + Copy). - Operation:
+ get_val(self: &): void– öffentliche Methode mit Shared Reference (&self) als Instanz-Receiver und Unit-/Void-Rückgabe.
- Stereotyp:
Module3::Struct1:- Stereotyp:
«Struct»(Modellierung einer Rust-Struktur / Product Type). - Modulpfad / Namespace:
Module3. - Template-Parameter / Generics-Box (Dashed Compartment):
T > Send– generischer TypparameterT, beschränkt auf den Marker-TraitSend(Thread-Transferierbarkeit). - Feld / Attribut:
+ var1: &'a T– öffentliches Member, deklariert als geborgte Referenz (&) mit explizitem Lifetime-Parameter'aauf den generischen TypT.
- Stereotyp:
- Beziehungen & Stereotypen:
- Realisierung (
«impl»): Gestrichelte Verbindungslinie mit geschlossener, nicht ausgefüllter Dreiecksspitze vonModule3::Struct1nachModule3::Trait1. - Semantik: Entspricht der Rust-Code-Generierung:
impl<'a, T> Module3::Trait1<T> for Module3::Struct1<'a, T> where T: Into<u64> + Copy + Send { ... } - Keine Vererbung (Rust kennt keine Klassenvererbung); reine Schnittstellen- bzw. Verhaltensrealisierung via statischem Dispatch.
- Realisierung (
3. Dynamisches Verhalten & Sequenzablauf
- Kategorie: Nicht zutreffend (rein statisches Typ- und Strukturmodell).
- Compile-Time-Dispatch & Semantik:
- Monomorphisierung: Statische Auflösung zur Übersetzungszeit (Zero-Cost Abstractions) anstelle von dynamischem vtable-Lookup (
dyn Trait). - Borrow-Checker-Invariante: Durch das Attribut
var1: &'a Tkann eine Instanz vonStruct1niemals länger leben als die referenzierte Instanz vonT. - Thread-Sicherheit: Durch die Bedingung
T: Sendist sichergestellt, dass Instanzen der Struktur über Thread-Grenzen hinweg transferiert werden dürfen.
- Monomorphisierung: Statische Auflösung zur Übersetzungszeit (Zero-Cost Abstractions) anstelle von dynamischem vtable-Lookup (
4. Normative Relevanz & Entwickler-Hinweise
- Modellierungs- und Codegenerator-Vorgabe:
- Werkzeuge (CASE-/UML-Tools) müssen Rust-spezifische Typ-Beschränkungen (Bounds) über UML-Template-Signaturen abbilden.
- Das Stereotyp
«impl»an einer Realisierungsbeziehung unterscheidet explizite Trait-Implementierungen von objektorientierter Interface-Implementierung.
- API-Vertrag für Adaptive Application Entwickler:
- Lifetime-Propagation: Entwickler müssen bei der Instanziierung von
Struct1die Lebensdauer'aim Scope der aufrufenden Funktion binden; eine Rückgabe oder Übergabe an asynchrone Tasks (z. B. viaara::core::Future) erfordert den Nachweis'a: 'static, andernfalls lehnt der Compiler den Code ab. - Konfliktfreie Bounds-Zusammenführung: Bei der Implementierung müssen alle Trait Bounds (
Send,Into<u64>,Copy) am konkreten TypTgleichzeitig erfüllt sein.
- Lifetime-Propagation: Entwickler müssen bei der Instanziierung von