2017-09-19 1 views
1

변경 가능한 변수는 키워드 mut으로 선언되고 초기화되지만 다음 코드 행에 사용되는 경우 키워드 mut을 반복해야합니다.두 번째로`mut '를 반복 작성해야하는 이유는 무엇입니까?

내 생각에 변수가 선언되고 변경 가능하도록 초기화되면 예상대로 유지됩니다. 이것은 통사론의 설탕인가 아니면 이것에 대한 특별한 이유가 있습니까?

나는 위의 코드는 다음과 같이 것으로 기대 : 나는 read_line에 호출에서 mut 키워드를 생략 한

let mut guess = String::new(); 

io::stdin() 
    .read_line(&guess) 
    .expect("Failed to read line"); 

참고.

답변

5

The Rust Programming Language, second edition, 특히 references and borrowing 섹션을 다시 읽으시기 바랍니다.

두 가지 유형의 참조가 있습니다. 변경 불가능하고 변경할 수 있습니다. 변수 일지도 모르는 경우에도 변경할 수있는 참조를 가져올 수 있습니다. 이 선택은 &foo 또는 &mut foo이라고 말하면됩니다.

이 기능을 사용하면 rules of references을 준수 할 수 있도록하는 것이 중요하다 :

  • 하나 변경 가능한 참조 : 주어진 시간에

    1. , 당신도 있지만 모두 할 수 있습니다.
    2. 많은 수의 불변 참조. BufRead::read_line으로

&mut guess을 말할 필요가하는 String에 변경 가능한 참조를 필요로한다.

+1

인용 된 텍스트를 확장하려면'x '를 쓰는 것은'x'에 대한 다중 참조를 동시에 만들 수 있기 때문에 불변의'x '에 매우 유용 할 수 있습니다. 모든'& x'가'x'가 변경 가능할 때'& mut x'를 자동으로 의미한다면, 하나의 범위에서'x'에 대한 하나 이상의 참조를 생성 할 수 없습니다. – user4815162342

관련 문제