벡터 첫 원소를 참조로 들고 있다가 뒤에 값을 추가하고 다시 출력하려는데 컴파일러가 계속 거부하네요.


fn main() {
    let mut v = vec![1, 2, 3];
    let first = &v[0];
    v.push(4);
    println!("{}", first);
}


에러는 이렇게 뜹니다.


error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable


first는 그냥 읽기용으로 잠깐 참조한 건데 왜 push가 문제가 되는지 모르겠어요. 값 하나 뒤에 붙이는 게 앞에 있는 원소 참조랑 무슨 상관인가 싶습니다. 컴파일러가 뭘 걱정하는 건지, 이럴 땐 보통 어떻게 우회하는지 궁금합니다.