TT Rust: Unterschied zwischen den Versionen

Aus Wiki CCC Göttingen
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
(Ergänzungen)
Zeile 19: Zeile 19:
[https://dl.dropboxusercontent.com/u/46560320/docs/rust/sg-rust-intro-de.pdf Vortragsfolien] (pdf, 175 KB)
[https://dl.dropboxusercontent.com/u/46560320/docs/rust/sg-rust-intro-de.pdf Vortragsfolien] (pdf, 175 KB)
[https://dl.dropboxusercontent.com/u/46560320/docs/rust/sg-rust-intro-de.mp3 Audiospur] (mp3, 41 MB, 88 Minuten)
[https://dl.dropboxusercontent.com/u/46560320/docs/rust/sg-rust-intro-de.mp3 Audiospur] (mp3, 41 MB, 88 Minuten)
=== Ergänzende Informationen zur Fehlerbehandlung ===
Wie im Vortrag erwähnt wurde, bietet Rust keine Ausnahmen (Exceptions). Ein "schwerwiegender" Fehler führt zu einem Abbruch eines Tasks. Viele Funktionen, die ihre Arbeit aufgrund von äußeren Einflüssen (fehlerhafte Eingaben oder ähnliches) aber nicht immer erledigen können, haben aber dementsprechende Rückgabetypen, worüber man Fehler signalisieren kann. Für eine Funktion, die im Erfolgsfall ein <tt>T</tt> zurück geben will, und sonst einen Fehlerwert des Typs <tt>E</tt> bietet sich da der Typ <tt>Result&lt;T,E&gt;</tt> an. Per Pattern Matching kann man zwischen diesen Fällen auch unterscheiden:
let r = Result<int,&'static str> = tue_was();
match r {
  Ok(i)  => { println!("Ich bekam einen int-Wert von {} zurück", x); }
  Err(e) => { println!("Da kam eine Fehlermeldung zurück: {}", e); }
}
Sonst gibt es auch <tt>Option&lt;T&gt;</tt>, wobei ein Wert dieses Typs entweder ein <tt>Some(T)</tt> oder ein <tt>None</tt> ist.
=== Ergänzende Informationen zum Type Casting ===
let i = 3;
let f = 3.0;
let x: f64 = i as f64;
let y: int = f as int;


[[Kategorie:Thunder Talks]]
[[Kategorie:Thunder Talks]]

Version vom 5. Juni 2014, 11:38 Uhr

Dies ist die Seite zum Thunder Talk über die Programmiersprache Rust, der am 3.6.2014 im Rahmen des OpenChaos gehalten wurde.

Der Vortrag fokussierte sich darauf, wie Rust Speichersicherheit garantieren kann, ohne dass das zu viel Overhead kostet. Die Sprache wird wie C und C++ zu den System-Programmiersprachen gezählt und stellt als solche eine der wenigen dar, die Dinge wie Speichersicherheit und Freiheit von Datenrennen garantieren kann. Außerdem wurde im Vortrag das Trait-System von Rust angerissen.

Zeit Inhalt
00:00-43:05 Vortrag (Hauptteil zu Speichersicherheit)
43:05-53:50 Fragen und Diskussion Teil 1
53:50-65:04 Vortrag (Bonus-Folien zu Traits)
65:04-88:22 Fragen und Diskussion Teil 2

Vortragsfolien (pdf, 175 KB) Audiospur (mp3, 41 MB, 88 Minuten)

Ergänzende Informationen zur Fehlerbehandlung

Wie im Vortrag erwähnt wurde, bietet Rust keine Ausnahmen (Exceptions). Ein "schwerwiegender" Fehler führt zu einem Abbruch eines Tasks. Viele Funktionen, die ihre Arbeit aufgrund von äußeren Einflüssen (fehlerhafte Eingaben oder ähnliches) aber nicht immer erledigen können, haben aber dementsprechende Rückgabetypen, worüber man Fehler signalisieren kann. Für eine Funktion, die im Erfolgsfall ein T zurück geben will, und sonst einen Fehlerwert des Typs E bietet sich da der Typ Result<T,E> an. Per Pattern Matching kann man zwischen diesen Fällen auch unterscheiden:

let r = Result<int,&'static str> = tue_was();
match r {
  Ok(i)  => { println!("Ich bekam einen int-Wert von {} zurück", x); }
  Err(e) => { println!("Da kam eine Fehlermeldung zurück: {}", e); }
}

Sonst gibt es auch Option<T>, wobei ein Wert dieses Typs entweder ein Some(T) oder ein None ist.

Ergänzende Informationen zum Type Casting

let i = 3;
let f = 3.0;
let x: f64 = i as f64;
let y: int = f as int;