FH Kufstein Gastvortrag
Beispiel Rust code Snippets
Hello world
fn main() {
println!("Hallo, FH Kufstein!");
}
Immutable by default
fn main() {
let data = 5;
println!("Wert von data ist: {}", data);
}
Mutable variables
fn main() {
let mut data = 5;
println!("Wert von data ist: {}", data);
data = 42;
println!("Der neue Werte von data ist: {}", data);
}
Structs
struct Punkt {
x: i32,
y: i32,
}
impl Punkt {
fn distanz_zum_nullpunkt(&self) -> f64 {
((self.x.pow(2) + self.y.pow(2)) as f64).sqrt()
}
}
fn main() {
let punkt = Punkt { x: 3, y: 4 };
println!("Distanz zum Nullpunkt: {}", punkt.distanz_zum_nullpunkt());
}
Zuverlässigkeit
Ohne weiteres tooling
Alle tests laufen in einem Docker container auf 1 CPU & 64MB RAM. Timeout auf 5 Sekunden.
Python
import random
def count_characters(s: str, c: str) -> int:
return s.count(c)
def get_count():
print("Start")
if(random.random() < 0.5):
return count_characters("Hello world", "o")
else:
return count_characters("Hello world", 23)
result = get_count()
print(result)
Rust
use std::time::{SystemTime, UNIX_EPOCH};
fn count_characters(s: &str, c: char) -> usize {
s.chars().filter(|x| *x == c).count()
}
fn main() {
println!("Start");
let now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
let random_bool = now.subsec_nanos() % 2 == 0;
if random_bool {
let count = count_characters("Hello world", 'o');
println!("{}", count);
} else {
let count = count_characters("Hello world", 23);
println!("{}", count);
}
}
Kein Wundermittel
Rust bedeutet nicht fehlerfreier Code.
fn main() {
let numbers = vec![1, 2, 3];
// Zugriff auf ein Element, das nicht existiert, führt zu einem Laufzeitfehler (panic)
println!("Das zehnte Element ist: {}", numbers[9]);
}
Fix
fn main() {
let numbers = vec![1, 2, 3];
match numbers.get(9) {
Some(value) => println!("Das zehnte Element ist: {}", value),
None => println!("Es gibt kein zehntes Element."),
}
}
Weitere Resourcen
Mein EuroPython 2023 Talk
Rust Blog von Shuttle.rs (guides & howtos)
YouTube Kanal von No Boilerplate
Fragen, Feedback & Kontakt
Ihr könnt mir gerne jederzeit schreiben.
Email: karim.jedda@gmail.com
Webseite: https://karimjedda.com
LinkedIn: https://linkedin.com/karim-jedda