let mut a = vec!(스트링, 스트링, 스트링); 의 경우를 생각해보자.
여기에서 스트링 하나만 소유권을 가진채 빼내고 싶을 경우에 어떻게 해야할까??

일단 index와 get은 사용할수 없음.
let mut b = a[0]; 이런건 안된다는 말임.
RHS에서 index가 사용될 경우에 a[0] 은 *(a.get(0)) 으로 작용되는데,
get은 불변참조자고, 따라서 해당 불변참조자의 참조한테는 데이터의 move권한이 없어서 대입이 불가능함.
의도적으로 RHS에서 *(a.get_mut(0))을 해봤자 당연히 move 권한은 없음.
index 와 get은 모두 참조를 통한 접근을 통해서 소유권을 보존하기 때문에 이 방식은 절대 안됨.

여기에서 그래서 내가 찾은 돌파구는 iterator 하나임.

let mut a = vec!(스트링, 스트링, 스트링);
let mut b: String;
let mut i = 0;
for mut x in a {
~~~~if i == 0 {
~~~~~~~~b = x
~~~~}
}
를 통해 가능하다는 것임.

하지만 이 방식에는 부작용이 있는데,
a전체에 대한 데이터를 move 한 후에 데이터를 추출한거라서
a전체에 대한 모든 접근이 막혀버림.
부분에 대한 소유권만 빼내려는데 전체의 소유권을 건드린다는것.
애초에 작은 메카니즘에 쓰인 불필요한 작업이 너무 많은것도 문제임.

이런 상황은 보통 어떤식으로 처리함???
패턴매칭으로 가능한데 적절한 패턴을 상상하지 못하는중인건가?? 잘 모르겠네...