[질문]
러스트 간단한 질문
나니킷(nanikit)
2019-01-14 10:32
추천 0
borrow checker한테 많이 뚜드려 맞은 것 같은데 아직도 감이 안 잡히는 게 슬프다.
use std
::iter
::Iterator
;
fn main() {
let v
= &mut vec![1u8, 2, 3];
let a
= &v
[..2].chunks(1);
let b
= &v
[1..];
for (m
, n
) in a
.zip(b
.iter()) {
println!("{:?} {}", m
, n
);
}
}
error
[E0507
]: cannot
move out of borrowed content
--> src\main
.rs
:7:17
|
7 | for (m
, n
) in a
.zip(b
.iter()) {
| ^ cannot
move out of borrowed content
error
: aborting due to previous error
For more information about this error
, try `rustc
--explain E0507`
.
이 에러가 어떤 이유로 나는 건지 알고 싶음. 어떻게 고치면 되는 지도 알려주면 좋고.
zip메소드는 self, 객체 소유권을 받는데, a의 타입이 Chunk의 레퍼런스여서 객체의 소유권을 이전받을 수가 없음. 그래서 zip에서 에러가 뜬다.
코드 한 10분 보고 내린 결론
ㄱㅅㄱㅅ. &하나 지우면 해결되는 문제였군.
오류 저거만 보여주면 알아보기 힘들잖아 어디가 문젠지 컴파일러가 알려줄건데
에러 딱 저렇게 뜸
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1e47bee72a74b6cac2a623655cda724f
2개뜨자나
그보다 a가 &Chunk인게 문제임
내가 nightly로 실행했는데 거긴 에러가 저거밖에 안 떴음. stable로 갈아타야하나.
nightly는 또 그렇네 ㄷㄷ