PR3-Rust-SS26/B-basics/7-compounds.rs

56 lines
1.8 KiB
Rust

fn main() {
// Dieser String ist ein String Slice, welcher eine unveränderliche Referenz auf einen bestehenden String ist
println!("Strings:\n-----");
let string: &str = "Das ist ein String.";
println!("{string}");
// Ein im Heap allokierter, veränderlicher und besitzender String, mehr dazu später
let string = String::from("Das ist auch ein String.");
println!("{string}");
println!("\nTupel:\n-----");
let tupel = (42, "Das hier ist ein Tupel.", true);
let (a, b, c) = tupel;
println!("{}, {}, {}", a, b, c);
println!("\nArrays und Slices:\n-----");
let array: [&str; 5] = ["Das", " ist", " ein", " Array", "."]; // Es wird explizit geschrieben, welche Größe es hat
println!("{:?}", array);
let array = [1, 2, 3, 4, 5, 6]; // Größe wird dynamisch bestimmt
println!("{:?}", array);
let element = array[0]; // Man kann die Elemente wie gewohnt ansprechen
println!("{}", element);
println!("{}", array.len()); // Länge kann ausgegeben werden
let ganzer_slice = &array; // Ein Slice, der auf das angegebene Array zeigt
let teil_slice = &array[1..4]; // Ein Slice, der nur auf ein bestimmten Teil des Arrays zeigt
println!("{:?}", ganzer_slice);
println!("{:?}", teil_slice);
println!("\nVektoren:\n-----");
let mut vektor = vec![1, 2, 3]; // Ein Vektor, dessen Einträge dynamisch verringert oder vergößert werden kann
println!("{:?}", vektor);
// Einige Methoden, die man auf Vektoren anwenden kann
vektor.push(4);
println!("{:?}", vektor);
vektor.insert(2, 20); // (index, wert)
println!("{:?}", vektor);
vektor.extend(array);
println!("{:?}", vektor);
vektor.remove(2);
println!("{:?}", vektor);
vektor.pop();
println!("{:?}", vektor);
vektor.clear();
println!("{:?}", vektor);
}