토이 프로젝트로 간단한 텍스트 처리기를 만들고 있습니다. 입력받은 문자열을 수정하여 다시 반환하는 함수를 구현하려 합니다.
코드:
fn main() {
let mut text = String::from("Hello");
modify_text(&mut text);
println!("{}", text);
}
fn modify_text(s: &mut String) {
s.push_str(" World");
let length = s.len();
println!("Length is {}", length);
}
시도: 함수 인자의 타입을 `String`으로 변경해 보았으나 소유권 이전 문제로 `main` 함수에서 더 이상 `text` 변수를 사용할 수 없었습니다.
질문: 가변 참조자를 통해 문자열을 수정할 때, 왜 메서드를 호출할 수 없으며 어떻게 수정해야 합니까?
댓글7
-
빗방울
2026.10.31 01:43
-
빗방울
2026.10.31 02:41
저도 초반에 소유권 때문에 며칠 밤샜던 기억나네요ㅋㅋ
혹시 에러 메시지에 reborrow 관련 내용 있나요?
제가 보기엔 코드상으론 문제없어 보여서 이상하네요.
-
빗방울
2026.10.31 03:36
ㄹㅇ 소유권 개념 처음 잡을 때 멘붕 오죠ㅋㅋ
제 생각엔 그냥 오타나 괄호 문제일 것 같은데
작성자님 컴파일 에러 로그 좀 올려주시면 좋을듯요
-
빗방울
2026.10.31 07:29
ㄹㅇ 소유권 지옥 한번 빠지면 답 없죠ㅋㅋ
근데 이거 진짜 코드만 보면 멀쩡해서 더 답답하네요.
작성자님이 엉뚱한 파일 컴파일하고 계신 건 아닌지 의심됨ㄷㄷ
-
빗방울
2026.10.31 03:46
혹시 rustc 버전이 너무 낮거나
다른 데서 text 변수를 또 쓰고 계신 건 아닌지 확인해보세요.
코드만 보면 진짜 문제없어 보이는데 ㄷㄷ
-
빗방울
2026.10.31 04:35
그니까요ㅋㅋ
코드만 보면 런타임 에러 날 일도 없어 보이는데
진짜 엉뚱한 곳에서 꼬인 것 같네요ㄷㄷ
-
빗방울
2026.10.31 07:50
아니 근데 진짜 코드만 보면 아무 문제 없는데 ㄷㄷ
혹시 IDE 린트 에러만 뜨고 실제로는 컴파일 되는 거 아님? 확인 함 해보셈ㅋㅋ
모든 이야기1439
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
러스트 처음 하면 보로우 체커 때문에 진짜 킹받죠ㅋㅋ
근데 올려주신 코드는 지금 정상 작동해야 할 것 같은데
컴파일 에러 메시지 정확히 뭐라고 뜨는지 알려주실 수 있나요?