From 75a0e0e42eb64aa2ed63c0747d5df17e99e6957b Mon Sep 17 00:00:00 2001 From: Semih <3025014@stud.hs-mannheim.de> Date: Thu, 4 Jun 2026 23:02:11 +0000 Subject: [PATCH] =?UTF-8?q?Kleine=20Ver=C3=A4nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B-basics/1-variablen.rs | 3 --- B-basics/2-konstanten.rs | 18 ------------------ B-basics/6-print.rs | 10 ++-------- B-basics/9-funktionen.rs | 6 +++--- G-advanced/static-mutex.rs | 17 +++++++++++++++++ 5 files changed, 22 insertions(+), 32 deletions(-) create mode 100644 G-advanced/static-mutex.rs diff --git a/B-basics/1-variablen.rs b/B-basics/1-variablen.rs index 1d0933a..068d14b 100644 --- a/B-basics/1-variablen.rs +++ b/B-basics/1-variablen.rs @@ -25,7 +25,4 @@ fn main() { let x = "Typwechsel ist erlaubt!"; println!("{x}"); - - const KONSTANTE: i32 = 42; // Gar nicht mehr veränderbar (auch nicht durch Shadowing) - println!("{KONSTANTE}"); } diff --git a/B-basics/2-konstanten.rs b/B-basics/2-konstanten.rs index 6cd4ff4..a442d2a 100644 --- a/B-basics/2-konstanten.rs +++ b/B-basics/2-konstanten.rs @@ -1,5 +1,3 @@ -use std::sync::Mutex; - // Globale Konstanten, können außerhalb von Funktionen deklariert werden const ANTWORT_AUF_ALLES: i32 = 42; // Const sind echte Konstanten, die nicht verändert werden könne und auch nicht überschattet werden können @@ -10,7 +8,6 @@ static mut PRAESENTIERER: &str = "Semih"; // Bei static ist es anders, diese existieren genau einmal im Speicher und haben somit eine feste Speicheradresse // Können mit mut versehen werden, diese können dann verändert werden in unsafe Blöcken // Dies sollte eher vermieden werden, um veränderbare static Konstanten zu erzeugen sollten Mutex verwendet werden -static COUNTER: Mutex = Mutex::new(0); // Nun ist es sicher dank Mutex fn main() { println!("The answer to life, the universe, and everything = {ANTWORT_AUF_ALLES}"); @@ -26,19 +23,4 @@ fn main() { PRAESENTIERER = "Lukas"; println!("Der nächste Präsentierer ist: {PRAESENTIERER}"); } - - // Das hier in Advanced - { - // Hier erstellen wir eine veränderliche Variable, die wir dannn locken, dann unwrappen, und dann um eins erhöhen können - // Für die Basics ist das zu komplex zum erklären, wir nehmen das mal so hin - // Man muss es in dem Fall nicht nochmal unlocken, dass geschieht beim Verlassen des Blocks automatisch - let mut c = COUNTER.lock().unwrap(); - println!("{c}"); - *c += 1; - } - - { - let c = COUNTER.lock().unwrap(); - println!("{c}"); - } } diff --git a/B-basics/6-print.rs b/B-basics/6-print.rs index 74a9867..af75859 100644 --- a/B-basics/6-print.rs +++ b/B-basics/6-print.rs @@ -1,18 +1,12 @@ fn main() { // print ist ein Makro welches Text an die Standardausgabe (stdout) sendet // println ist ein ähnliches Makro, welches einen Zeilenumbruch anhängt - println!("Hier geschieht eine Textausgabe in die Standardausgabe"); - println!( - "{}", - "Die geschweiften Klammern sind quasi die Escape Zeichen der printf() Funktion aus C" - ); + println!("{}", "Die geschweiften Klammern sind quasi die Escape Zeichen der printf() Funktion aus C"); let x = 42; // Wenn der Name der Variable in die geschweiften Klammern geschrieben wird, kann diese auch ausgegeben werden - println!( - "Variablen können deklariert und somit in die Standardausgabe geschrieben werden: x = {x}" - ); + println!("Variablen können deklariert und somit in die Standardausgabe geschrieben werden: x = {x}"); // Hier sieht man die printf() Mechanik aus C println!("Variable außerhalb geschrieben: x = {}", x); diff --git a/B-basics/9-funktionen.rs b/B-basics/9-funktionen.rs index 33f3765..536fcf3 100644 --- a/B-basics/9-funktionen.rs +++ b/B-basics/9-funktionen.rs @@ -11,7 +11,7 @@ fn main() { println!("{:?}", r.flaeche()); } -// Das ist eine Funktion, die ein Boolean zurück gibt, Parameter können in die Klammern geschrieben werden +// Das ist eine Funktion, die ein Boolean zurückgibt, Parameter können in die Klammern geschrieben werden // Der zurückgebende Typ wird nach einem -> geschrieben fn add(a: i32, b: i32) -> i32 { a + b // implizites return aka wenn der letzte Ausdruck einer Methode kein ; und kein return hat, wird dieses returnt @@ -26,7 +26,7 @@ fn odd(a: i32) -> () { } } -// Man kann das -> auch weglassen, dann wird automatisch die Unit zurück gegeben +// Man kann das -> auch weglassen, dann wird automatisch die Unit zurückgegeben fn random_ausgabe() { println!("Funktion ohne Parameter und \"ohne\" Rückgabewert"); } @@ -56,4 +56,4 @@ impl Rechteck { self.hoehe *= s; self.breite *= s; } -} \ No newline at end of file +} diff --git a/G-advanced/static-mutex.rs b/G-advanced/static-mutex.rs new file mode 100644 index 0000000..a04eb46 --- /dev/null +++ b/G-advanced/static-mutex.rs @@ -0,0 +1,17 @@ +use std::sync::Mutex; +static COUNTER: Mutex = Mutex::new(0); // Nun ist es sicher dank Mutex + +fn main() { + { + // Hier erstellen wir eine veränderliche Variable, die wir dannn locken, dann unwrappen, und dann um eins erhöhen können + // Man muss es in dem Fall nicht nochmal unlocken, dass geschieht beim Verlassen des Blocks automatisch + let mut c = COUNTER.lock().unwrap(); + println!("{c}"); + *c += 1; + } + + { + let c = COUNTER.lock().unwrap(); + println!("{c}"); + } +}