Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

How-To

Rust-Codebeispiel einbinden

mdBook unterstützt ausführbare und testbare Rust-Codeblöcke direkt in Markdown. Ein Codeblock kann dabei entweder nur zur Anzeige dienen oder direkt im Rust Playground ausgeführt werden.

Beispiel: Einfache mathematische Funktionen

main.rs definiert zwei Funktionen:

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn subtract(a: i32, b: i32) -> i32 {
    a - b
}

fn main() {
    println!("2 + 3 = {}", add(2, 3));
    println!("5 - 2 = {}", subtract(5, 2));
}

Ausgabe im Browser:

2 + 3 = 5
5 - 2 = 3

Funktionsreferenz

FunktionBeschreibungBeispielErgebnis
add(a, b)Addiert zwei Ganzzahlenadd(2, 3)5
subtract(a, b)Subtrahiert b von asubtract(5, 2)3

Ausführbare Codeblöcke

Das Attribut Editable macht einen Codeblock im Browser direkt bearbeitbar:

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    println!("2 + 3 = {}", add(2, 3));
}

Rust-Doctests

Ein Doctest ist ein automatisch testbarer Codeblock direkt in der Dokumentation. Mit mdbook test werden alle Rust-Codeblöcke automatisch getestet:

mdbook test
AttributBedeutung
editableCode im Browser editierbar
noplaygroundPlayground-Button ausblenden
ignoreBlock wird beim Test übersprungen
should_panicTest erwartet einen Panic

Mermaid-Diagramm

Das folgende Klassendiagramm zeigt die Struktur eines einfachen Fußballspiels in Rust, durch Mermaid modeliert. Es beschreibt die beteiligten Klassen, ihre Attribute und Methoden sowie die Beziehungen zwischen ihnen. [4]

---
config:
  layout: elk
  elk:
    direction: RIGHT
---
classDiagram
    class Game {
      +Team team_a
      +Team team_b
      +Ball ball
      +start()
      +score_goal(team: Team)
    }

    class Team {
      +String name
      +Player[4] players
      +u8 score
      +add_goal()
    }

    class Player {
      +String name
      +Position position
      +kick(ball: Ball)
    }

    class Ball {
      +f32 x
      +f32 y
      +move(direction: Direction)
    }

    class Position {
      <<enumeration>>
      GOALKEEPER
      DEFENSE
      MIDFIELD
      ATTACK
    }

    class Direction {
      <<enumeration>>
      UP
      DOWN
      LEFT
      RIGHT
    }

    Game --> Team : has
    Game --> Ball : uses
    Team --> Player : includes
    Player --> Ball : interacts with
    Player --> Position : uses
    Ball --> Direction : moves in

Das Spiel (Game) verwaltet zwei Teams und einen Ball. Jedes Team besteht aus vier Spielern, die jeweils eine Position (Goalkeeper, Defense, Midfield oder Attack) einnehmen. Ein Spieler kann den Ball treten, der sich dann in eine der vier Richtungen (Direction) bewegt.