Slices
Lånte visninger
Slices er en gratis Lær at programmere i Rust-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lær at programmere i Rust, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lær at programmere i Rust-kurset indeholder 4 lektioner i alt.
Hvad er en slice?
En slice er en lånt visning af en sammenhængende del af en samling. Den ejer ikke data — den peger ind i eksisterende data.
Slices skrives med et interval i kantede parenteser.
fn main() {
let arr = [1, 2, 3, 4, 5];
let part = &arr[1..4];
println!("{:?}", part);
}Syntaks for slice-intervaller
Intervaller vælger et start- og slutindeks. Slutindekset er eksklusivt.
&v[1..4]— indeks 1, 2, 3.&v[..3]— fra starten til 3.&v[2..]— fra 2 til slutningen.
fn main() {
let v = vec![10, 20, 30, 40];
println!("{:?}", &v[..2]);
println!("{:?}", &v[2..]);
}Streng-slices
En streng-slice &str er en visning af en del af en String. Indeksintervaller angives efter byte-position.
fn main() {
let s = String::from("hello world");
let hello = &s[0..5];
let world = &s[6..11];
println!("{} {}", hello, world);
}Slices af hele samlingen
Brug &v[..] til at lave en slice af hele samlingen. Sådan låner en Vec som en slice.
fn main() {
let v = vec![1, 2, 3];
let whole = &v[..];
println!("{:?}", whole);
}Slices som parametre
Funktioner, der tager &[T], accepterer både arrays og vektorer. Det gør dem fleksible.
fn sum(items: &[i32]) -> i32 {
let mut total = 0;
for x in items {
total += x;
}
total
}
fn main() {
let v = vec![1, 2, 3];
let a = [4, 5, 6];
println!("{} {}", sum(&v), sum(&a));
}Slices låner, men ejer ikke
Fordi en slice låner, skal den oprindelige samling stadig være i live, mens slicen bruges. Compileren håndhæver dette.
fn main() {
let v = vec![100, 200, 300];
let s = &v[0..2];
println!("slice {:?}, original {:?}", s, v);
}Slicens længde
Ligesom andre samlinger har slices en len()-metode, der angiver antallet af elementer, de dækker.
fn main() {
let v = vec![5, 6, 7, 8, 9];
let middle = &v[1..4];
println!("length {}", middle.len());
}first og last
Slices indeholder first() og last(), som returnerer Option-værdier, så tomme slices håndteres sikkert.
fn main() {
let data = [10, 20, 30];
let s = &data[..];
println!("{:?} {:?}", s.first(), s.last());
}Iteration over en slice
Du kan iterere over en slice ligesom over enhver anden samling.
fn main() {
let v = vec![1, 2, 3, 4];
for x in &v[1..3] {
println!("{}", x);
}
}En funktion til det første ord
Et almindeligt anvendelsestilfælde for slices er at returnere en slice ind i eksisterende tekst, f.eks. det første ord i en sætning.
fn first_word(s: &str) -> &str {
let bytes = s.as_bytes();
for (i, &b) in bytes.iter().enumerate() {
if b == b' ' {
return &s[0..i];
}
}
s
}
fn main() {
println!("{}", first_word("hello there"));
}Hvorfor slices er sikre
Slices undgår at kopiere data og forhindrer samtidig hængende referencer. Lånekontrollen garanterer, at de underliggende data lever længere end slicen.
fn main() {
let words = vec!["a", "b", "c", "d"];
let pair = &words[1..3];
println!("{:?}", pair);
}Hurtigt tjek
Husk, hvad en slice repræsenterer.
Opsummering
Slices i Rust:
- En lånt visning:
&v[start..end], hvor slutningen er eksklusiv. &strer en streng-slice;&[T]er en array- eller vektor-slice.- Slice-parametre accepterer både arrays og vektorer.
- Lånekontrollen holder slices sikre.
fn average(nums: &[i32]) -> i32 {
nums.iter().sum::<i32>() / nums.len() as i32
}
fn main() {
let v = vec![4, 8, 12];
println!("{}", average(&v[..]));
}Lær Rust med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 39
- Lektioner
- 144
Ofte stillede spørgsmål
Er lektionen “Slices” gratis?
Ja — alle 3 lektioner i læringssporet Lær at programmere i Rust, inklusive “Slices”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lær at programmere i Rust-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Slices”?
Lånte visninger Du øver dig i Lær at programmere i Rust med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lær at programmere i Rust?
Der kræves ingen tidligere erfaring. Lær at programmere i Rust på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Slices”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lær at programmere i Rust-lektion?
Ja. Alle Lær at programmere i Rust-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.