capypad
0 Tage Serie
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
rust
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