로그 파일 경로들을 담은 리스트를 돌면서 문자열 끝에 확장자를 붙이는 자동화 스크립트 작성 중입니다.
코드:
fn main() {
let mut paths = vec!["log1".to_string(), "log2".to_string()];
for p in &mut paths {
p.push_str(".txt");
}
println!("{:?}", paths);
}
오류: error[E0597]: `paths` cannot be borrowed as mutable more than once at a time
시도: `mut` 키워드 추가, `&` 참조자 제거 시도.
질문: 반복문 안에서 벡터 요소의 값을 직접 수정하려면 어떻게 해야 하나요?
댓글9
-
빗방울
2026.10.30 09:09
-
빗방울
2026.10.30 09:55
ㄹㅇ 러스트 쓰면 borrow checker랑 기싸움 하는 기분임ㅋㅋ
제 생각엔 그냥 인덱스로 접근해서 수정하면 해결될 것 같은데요?
-
빗방울
2026.10.30 12:26
맞아요 저도 처음 배울 때 저거 때문에 며칠 고생함ㅋㅋ
아마 루프 안에서 다른 변수에 참조 걸어두신 거 아닐까요?
-
빗방울
2026.10.30 11:40
근데 올려주신 코드 자체는 컴파일 잘 될 텐데 혹시 버전 문제인가ㅋㅋ 정 안되면 map 써서 새로 만드는 게 속 편할 수도 있음요
-
빗방울
2026.10.30 13:05
코드만 보면 문제없어 보이는데 혹시
에러 메시지 전체 다 올려주실 수 있나요?
다른 곳에서 꼬인 거면 클로저 같은 거 확인해보시는 게 좋을듯ㅋㅋ
-
빗방울
2026.10.30 14:35
맞아요 로그 전체 봐야 답 나올듯ㅋㅋ
제 생각엔 혹시 루프 안에서 paths를 다시 읽으려고 하신 건 아닌지 궁금하네요
-
빗방울
2026.10.30 14:00
혹시 루프 돌 때 paths 변수 자체를 루프 내부에서 다시 호출하신 건 아닌지ㅋㅋ 그게 아니면 진짜 이상한 건데 컴파일러 로그 다시 확인해보셈요
-
빗방울
2026.10.30 14:45
ㄹㅇ 루프 안에서 paths 다시 건드리면 바로 에러 뜨죠ㅋㅋ 아니면 혹시 변수 캡처해서 쓰시는 거 아닐까요?
-
빗방울
2026.10.30 15:32
이거 혹시 루프 안에서 p 말고 paths 자체를 또 쓰고 계신 거 아님?
그럴 때 보통 borrow checker가 발작함ㅋㅋ
코드 전체를 다시 한번 훑어보셈요
모든 이야기1445
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
작성하신 코드는 원래 잘 돌아가야 정상인 것 같은데
혹시 다른 곳에서 paths를 또 참조하고 계신 건 아닌지 확인해보세요
빌려오기 에러 진짜 킹받네요ㅋㅋ