rust / intermediate
Snippet
Slices: Mit Datenabschnitten arbeiten
Slices erlauben es auf eine zusammenhängende Sequenz von Elementen innerhalb einer Collection zu referenzieren ohne die Eigentümerschaft zu übernehmen. Der Slice-Typ wird geschrieben als &[T] für Arrays oder &str für String-Slices. String-Slices sind UTF-8 codiert und jeder Byte-Zugriff muss Zeichengrenzen berücksichtigen. Slices werden als Referenz übergeben um Datenkopie zu vermeiden.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
fn first_word(s: &str) -> &str {let bytes = s.as_bytes();for (i, &item) in bytes.iter().enumerate() {if item == b' ' {return &s[0..i];}}s}fn main() {let s = String::from("hello world");let word = first_word(&s);let arr = [1, 2, 3, 4, 5];let slice: &[i32] = &arr[1..4];println!("Slice: {:?}", slice);let s2 = "embedded string";let part = &s2[0..8];println!("Part: {}", part);}
Erklärung
1
fn first_word(s: &str) -> &str
Funktion nimmt einen String-Slice und gibt einen String-Slice zurück der auf das erste Wort zeigt
2
let slice: &[i32] = &arr[1..4]
Erstellt einen Slice der Array-Elemente an Indices 1, 2 und 3. Typannotation zeigt Referenz auf eine Sequenz von i32
3
let part = &s2[0..8]
String-Slice von Byte 0 bis 8. Muss an UTF-8 Zeichengrenzen aufgeteilt werden