Názor k článku Práce s poli v programovacím jazyku Rust od 85127a9c - Problém je v tom, co je vlastně na...

  • Článek je starý, nové názory již nelze přidávat.
  • 2. 2. 2017 15:48

    85127a9c (neregistrovaný)

    Problém je v tom, co je vlastně na let mut b = &a[..] mutabilní. b je zde mutabilní proměnná držící typ &[i32], tedy nemutabilní referenci na řez polem. Takže b můžeme přiřadit jakoukoliv jinou hodnotu typu &[i32], ale nemáme mutabilní přístup k hodnotám pole.

    let mut b = &a[2..6];
    println!("{:?}", b);  // [2, 3, 4, 5]
    b = &b[1..];
    println!("{:?}", b);  // [3, 4, 5]; 

    Naproti tomu let b = &mut a[2..6] nabízí řez polem s mutabilním přístupem, ale samotné proměnné b nelze přiřadit jinou hodnotu typu &mut [i32].

    let mut a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    {
        let b = &mut a[2..6];
        b[2] = 0;
        println!("{:?}", b);  // [2, 3, 0, 5]
    }
    println!("{:?}", a);  // [0, 1, 2, 3, 0, 5, 6, 7, 8, 9]