본문으로 건너뛰기

안동민 개발노트

본문 시작

들어가기에 앞서

온라인·오프라인 학습 환경과 예제 실행 준비 사항을 확인하고 현재 수준에 맞는 러스트 학습 시작점을 선택합니다.

이 교재는 온라인과 오프라인 환경 모두를 고려해 작성되었습니다.

러스트 설치 또는 업데이트가 필요하다면 1장의 설치 절을 먼저 참고해 주세요.

러스트의 공식 문서는 영문 기준으로 공식 문서 사이트에서 확인할 수 있으며, 오프라인 환경에서는 rustup doc --book 명령으로 로컬 문서를 바로 열 수 있습니다.

에디션별 차이와 호환성에 관한 배경은 부록 E에서 함께 다룹니다.

현재 공식 Book의 예제와 설명은 별도 안내가 없는 한 edition = "2024" 관용구를 기준으로 합니다. 에디션은 크레이트별로 선택하며, 최신 도구 체인은 그보다 앞서 나온 에디션도 함께 지원합니다.

설치 환경, 개념과 용어, 에디션과 경계 문제를 공식 설치 절, Rust Book, Edition Guide로 라우팅하는 흐름

Rust · official docs · routing

막힌 종류를 분류하면 돌아갈 공식 자료가 선명해진다

환경, 개념, 에디션·경계를 먼저 나눕니다. 현재 공식 Book은 Rust 2024 관용구를 기준으로 하며, 에디션은 크레이트별 선택이라 기존 에디션 지원과 별개입니다.

Rust 학습 중 막힌 지점에 따른 자료 선택 흐름 막힌 종류를 판단해 설치와 PATH는 1장 설치 절, 개념과 용어는 공식 Book과 오프라인 문서, 에디션과 unsafe FFI 경계는 부록 E, Edition Guide, Reference로 나눈다. 경계 자료에서는 Rust 2024의 unsafe extern과 ABI, 시그니처 계약을 확인한 다음 가장 작은 예제로 돌아간다. 무엇이 막혔나? 환경 · 개념 · 경계 환경 개념 경계 설치·PATH 1장 설치 절 rustc --version 개념·용어 공식 Rust Book rustup doc --book 에디션·FFI 경계 Edition Guide · Reference 2024 · unsafe extern 가장 작은 예제로 복귀 같은 명령으로 기준점 확인
환경

설치·업데이트·PATH

1장 설치 절에서 rustc --version으로 도구 체인을 먼저 분리합니다.

개념

공식 Rust Book

온라인 Book을 기준으로 용어를 맞춥니다. 오프라인에서는 rustup doc --book을 실행합니다.

경계

에디션·FFI 경계

부록 E, Edition Guide, Reference에서 Rust 2024 맥락과 unsafe extern, ABI와 시그니처 책임을 함께 확인합니다.

최신 컴파일러는 이전 에디션의 크레이트도 지원합니다. 버전 문제와 에디션 선택을 섞지 말고, 자료를 확인한 뒤 재현 가능한 최소 예제로 돌아옵니다.

🚨 더 상호작용적인 배움의 경험을 원하시나요? 다른 버전의 러스트 책을 시도해보세요: 퀴즈, 하이라이팅, 시각화 등등의 기능이 있습니다. https://rust-book.cs.brown.edu

이제 러스트가 다루는 문제와 학습 지도를 본격적으로 살펴보겠습니다.

콕 집어서 말할 순 없지만, 러스트 프로그래밍 언어는 역량 강화 (empowerment)에 근간을 두고 있습니다.

여러분이 지금 어떤 종류의 코드를 작성하고 있건 간에, 러스트는 여러분이 더 다양한 분야의 프로그램을 명확한 제약 안에서 작성할 수 있게 해 줍니다.

예를 들어 메모리 관리, 데이터 표현, 동시성 등 저수준의 정보를 다루는 ‘시스템 수준’ 프로그래밍을 생각해봅시다.

예로부터 이 분야는 악명 높은 함정을 피하고자 수년 동안 관련 지식을 쌓아온 소수 정예만이 다가갈 수 있는 난해한 영역으로 여겨져 왔습니다.

그리고 이런 사람들마저도 코드에 취약점 공격, 충돌이나 손상의 위험이 없도록 심혈을 기울여 작업해야 합니다.

러스트의 Safe Rust 영역은 잘못된 빌림, 수명, 데이터 경쟁 등 여러 메모리 안전 오류를 컴파일 단계에서 막고, 친숙한 도구로 그 조건을 설명합니다.

다만 논리 오류와 모든 충돌을 없애는 보장은 아니며, 저수준 unsafe나 FFI를 사용하면 컴파일러가 확인하지 못하는 계약을 직접 검토해야 합니다.

게다가 이 언어는 속도와 메모리 사용량 측면에서 효율적인 신뢰할 수 있는 코드로 자연스럽게 인도하도록 설계되었습니다.

Safe Rust 코드는 언어가 허용한 안전 연산만 사용하며, 건전한 내부 구현을 전제로 컴파일러가 메모리 안전 규칙을 강제합니다. 러스트는 소유권과 RAII를 사용해 추적 가비지 컬렉터에 의존하지 않고 자원 수명을 관리합니다.

unsafe는 검사를 끄는 기능이 아닙니다. 컴파일러가 증명할 수 없는 추가 안전 조건을 선언하거나 그 조건을 충족했다고 작성자가 책임지는 경계입니다. 안전한 추상화 안에 unsafe 구현을 캡슐화할 수도 있지만, 그 구현은 문서화한 불변식을 지켜야 합니다.

FFI에서도 ABI, 외부 함수 시그니처, 포인터와 수명 전제조건은 작성자의 계약입니다. Rust 2024에서는 외부 블록을 unsafe extern으로 선언하며, 개별 항목을 안전하다고 명시하더라도 선언의 정확성은 작성자가 보장해야 합니다.

컴파일러 오류를 만났을 때도 같은 관점이 중요합니다.

메시지를 보편적인 수정 지시로 외우지 말고, 먼저 주 진단과 첫 스팬, 라벨과 도움말을 읽습니다. 소유권 오류라면 소유자, 이동 지점, 빌림 수명, 가변성, 의도한 API 계약을 함께 표시합니다.

그 다음 빌리기, 실행 순서 변경, 소유권 반환, 데이터 구조 재설계, clone 중 의도에 맞는 수정을 고릅니다. 모든 빌림 오류를 범위 축소나 복제로 해결하는 보편 공식은 없습니다.

이전부터 저수준 코드를 작성하던 프로그래머는 러스트를 사용하여 야망을 키울 수 있습니다.

예를 들면, Safe Rust에서 병렬화를 도입하면 컴파일러가 여러 데이터 경쟁과 잘못된 공유를 거부합니다.

그래도 교착 상태, 순서 의존성, 성능 병목 같은 논리·운영 문제는 별도로 설계하고 검증해야 합니다.

컴파일러가 확인한 소유권과 수명 불변식을 바탕으로 최적화를 시도하되, unsafe 경계와 외부 시스템의 조건은 테스트와 검토로 보완합니다.

러스트는 저수준 시스템 프로그래밍에만 국한되지 않습니다.

CLI 앱, 웹 서버 등 수많은 종류의 코드를 편하게 작성할 수 있을 정도로 표현력이 풍부하고 개발자 친화적으로 설계되어 있습니다.

이 책을 읽다 보면 CLI 앱과 웹 서버 두 경우에 대한 간단한 예제가 나올 것입니다.

러스트로 작업하면 한 분야에서 구축한 기술을 다른 분야에도 써먹을 수 있습니다.

웹 앱을 작성하면서 러스트를 배운 다음, 같은 기술을 라즈베리 파이를 대상으로 적용해 볼 수 있지요.

이 책은 사용자의 역량을 강화할 러스트의 잠재력을 완전히 담아내었습니다.

친근하고 접근하기 쉬운 텍스트로 러스트에 대한 지식뿐만 아니라 프로그래머로서의 능력과 실제 예제를 통해 개념을 확인할 수 있도록 구성했습니다.

그럼, 바로 시작해서 배울 준비를 해보죠.

러스트 커뮤니티에 오신 것을 환영합니다!


러스트 학습 시작 기준

입문 단계에서는 많은 자료를 동시에 보기보다 기준을 고정하는 편이 학습 효율이 높습니다.

  • 문법 암기보다 컴파일러 오류 메시지 해석을 우선합니다.
  • 예제 복붙 후에는 한 줄이라도 수정해 동작 변화 이유를 확인합니다.
  • 주 1회는 "헷갈린 규칙"만 다시 정리해 재학습 비용을 줄입니다.

이 기준은 기준 명령의 결과와 주 진단을 읽고, 계약을 지도화하고, 수정 하나를 선택해 한 번만 적용한 뒤 같은 명령을 재실행해 증거를 비교하는 짧은 루프로 굳히는 편이 좋습니다.

기준 명령 실행, 한 번의 수정, 주 진단 읽기, 계약 지도 작성, 의도 보존 수정, 같은 명령 재실행의 여섯 역이 증거 기록 허브를 갱신하는 Rust 학습 루프

Rust · diagnostic-first · evidence loop

진단을 먼저 읽고 같은 명령으로 증거를 누적한다

한 번에 하나만 바꾸고 주 진단·스팬·라벨을 먼저 읽습니다. 소유권 오류에는 보편 처방이 없으며 의도한 소유권과 API 계약을 보존하는 가장 작은 수정을 선택합니다.

여섯 학습 역과 하나의 증거 기록 허브 기준 명령의 결과와 주 진단을 읽고 계약을 지도화한다. 수정 하나를 선택해 한 번만 적용하고 같은 명령을 재실행한 뒤 이전 증거와 비교해 첫 단계로 돌아간다. 각 단계는 명령, 차이, 진단, 규칙을 중앙 기록에 누적한다. 결과·주 진단 읽기 command · primary span 계약 지도 그리기 owner · move · borrow 수정 하나 선택 borrow · order · design 한 번만 수정 one small diff 같은 명령 재실행 check · test · run 증거 비교 before · after 증거 기록 command · diff diagnostic · rule
증거 기록command · diff · diagnostic · rule
  1. 결과와 주 진단 읽기

    기준 명령을 실행한 뒤 주 메시지, 첫 스팬, 라벨, 도움말을 순서대로 확인합니다.

  2. 계약 지도 그리기

    소유자, 이동 지점, 빌림 수명, 가변성, unsafe 전제조건을 표시합니다.

  3. 수정 하나 선택

    빌리기, 순서 변경, 소유권 반환, 구조 재설계 중 의도에 맞는 수정을 고릅니다.

  4. 한 번만 수정

    선택한 변경 하나만 적용해 원인과 결과를 연결합니다.

  5. 같은 명령 재실행

    같은 명령으로 새 결과를 얻어 비교할 기준을 유지합니다.

  6. 증거 비교

    명령, 차이, 진단, 규칙의 전후를 기록하고 첫 단계로 돌아갑니다.

Safe Rust

안전 연산과 명시적 비용

건전한 내부 구현을 전제로 Safe Rust는 메모리 안전 규칙을 강제합니다. 소유권과 RAII는 추적 가비지 컬렉터에 의존하지 않고 자원 수명을 관리합니다.

unsafe · FFI

증명 책임이 작성자에게 이동

unsafe는 검사를 끄지 않습니다. Rust 2024의 unsafe extern은 ABI, 시그니처, 외부 전제조건의 책임을 드러냅니다. 안전 항목도 선언 정확성은 작성자가 보장합니다.

borrow diagnostic

보편 처방 대신 의도 확인

빌리기, 재배치, 소유권 반환, 데이터 구조 재설계, clone 중 무엇이 맞는지는 의도한 계약에 달려 있습니다. 진단만으로 고정된 해법을 만들지 않습니다.

  • 시계 방향 반복
  • 증거 기록 갱신
  • 진단 우선 확인

컴파일 오류는 실패 판정이 아니라 이 코드의 계약을 좁히는 증거입니다. 첫 진단에서 출발하고 같은 명령으로 비교하는 루프는 CLI, 서버, 저수준, 임베디드 코드에도 같은 기준으로 확장됩니다.

이 페이지의 목차