C.W.K.
Stream
Lesson 06 of 06 · published

컴파일러를 멘토처럼 읽기

~12 min · foundations, compiler, errors, clippy, mindset

Level 0Rust 호기심러
0 XP0/80 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete

Rust 에선 다른 거의 모든 것보다 컴파일러 출력을 읽는 데 시간을 더 써. 좋은 소식: Rust 의 에러는 주류 언어 중 거의 최고야. 그걸 읽는 법을 배우는 게 Rust 를 배우는 거야.

에러의 해부학

Rust 에러는 매번 같은 구성요소를 가져: 에러 코드 (E0382), 한 줄 요약, span (caret 으로 가리킨 정확한 소스 위치), 그리고 종종 수정을 제안하는 help:note:. 위에서 아래로 읽어. 요약은 무엇 을, span 은 어디 를, help 는 어떻게 를 알려줘.

rustc --explain

모든 에러 코드엔 풀 설명이 있어. rustc --explain E0382 는 버그와 수정 예시가 든 완전한 설명을 출력해. 낯선 에러를 만나면 그게 첫수야 — 웹 검색보다 먼저.

경고 vs 에러

에러는 컴파일을 멈춰; 경고는 안 멈추지만 무시하면 위험해. 안 쓴 변수, 안 쓴 import, 쓰는 걸 까먹은 값 — 경고는 컴파일러가 냄새를 알아챈 거야. 첫날부터 빌드를 경고-깨끗하게 유지해; 나중에 백 개에서 파내는 것보다 훨씬 쉬워.

clippy — 컴파일러의 고집 센 사촌

cargo clippy 는 정확성을 넘어 관용구 로 들어가: 이터레이터여야 할 수동 루프, 더 깔끔한 형태가 있는 장황한 패턴, 불필요한 clone 을 잡아줘. 매 줄을 리뷰해주는 Rust 멘토를 두는 거랑 같아. (툴링 트랙은 나중에.)

에러 메시지가 곧 레슨이야. Rust 는 가르침을 컴파일러로 앞당겨놨어. 제안된 수정을 맹목적으로 붙여넣는 대신 실제로 읽은 에러 하나하나가, 나중에 어렵게 안 배워도 되는 개념이야.

피파의 메모

Rust 가 나한테 click 하게 만든 재해석: 컴파일러는 내가 통과해야 할 관문이 아니야. 내 코드를 이미 읽고 어디서 깨지는지 아는 리뷰어야. 에러를 '넌 실패했어' 가 아니라 '리뷰에서 내가 짚을 부분은 여기야' 로 읽기 시작하니까 언어 전체가 부드러워졌어.

Code

위에서 아래로 읽는 진짜 에러·text
error[E0382]: borrow of moved value: `s`
 --> src/main.rs:4:20
  |
2 |     let s = String::from("hi");
3 |     let s2 = s;        // value moved here
4 |     println!("{}", s); // value borrowed here after move
  |                    ^ value borrowed here after move
  |
  = help: consider cloning the value if the performance cost is acceptable
디버깅 반사신경 두 개·bash
rustc --explain E0382   # 아무 에러 코드나 풀 설명
cargo clippy            # 프로젝트 전체에 관용구 + 린트 패스

External links

Exercise

아직 안 본 컴파일러 에러를 일으키는 작은 프로그램을 써봐 (불변 변수에 할당하거나, 값을 move 한 뒤에 쓰거나). 고치지 마. 그게 준 에러 코드에 rustc --explain 을 돌리고, 네 말로 — 정확히 무슨 규칙을 어겼는지 적어봐.
Hint
핵심은 수정이 아니야. 에러를 거절이 아니라 정보로 읽는 습관을 들이는 거야. 그 습관이 Ownership 트랙 전체의 선행조건이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.