2015-05-16 17 views
6

&[T] türünde bir değişkenim var; a'un bir alt kısmına nasıl başvuru yapabilirim?Alt bölümler nasıl alınır?

Somut bir örnek olarak, a.len()'un sağlanmış olması koşuluyla a'un ilk ve ikinci yarısını almak istiyorum.

cevap

11

Bunun için kesme sözdizimini kullanın:

fn main() { 
    let data: &[u8] = b"12345678"; 
    println!("{:?} - {:?}", &data[..data.len()/2], &data[data.len()/2..]); 
} 

Genel sözdizimi start_idx ve başlayarak slice türetilmiş bir dilim verir

&slice[start_idx..end_idx] 

(o here deneyin) end_idx-1 ile biten (yani, doğru dizindeki öğe dahil değildir). Sıfır veya dilim uzunluğu anlamına gelen indeks de ihmal edilebilir (her ikisi için de geçerli). Eğer iki dilim halinde bazı pozisyonda bir dilim bölmek istiyorsanız, split_at() yöntemi kullanmak genellikle daha iyi olduğunu

Not: Ayrıca

let data = b"12345678"; 
let (left, right): (&[u8], &[u8]) = data.split_at(4); 

, bu işten iki değişken dilimler elde etmenin tek yolu budur başka değişken dilim:

let mut data: Vec<u8> = vec![1, 2, 3, 4, 5, 6, 7, 8]; 
let data_slice: &mut [u8] = &mut data[..]; 
let (left, right): (&mut [u8], &mut [u8]) = data_slice.split_at_mut(4); 

Ancak bu temel şeyler Rust üzerinde the official book açıklanmıştır. Rust'u öğrenmek istiyorsan oradan başlamalısın.

İlgili konular