본문 바로가기

들어가기에 앞서

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

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

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

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

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

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

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

Rust · official docs · routing

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

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

막힌 종류의 세 갈래와 작은 예제로의 합류환경은설치절,개념은Book,경계는EditionGuide/Reference의서로다른선택3갈래다.각자료에서확인한뒤작은예제로합류한다.3자료사이에실행순서간선은없다.외부unsafe전제는Reference범위로같이확인한다.문제 종류환경 · 개념 · 경계설치·PATH1장 설치 절rustc --version개념·용어공식 Rust Bookrustup doc --book에디션·FFIEdition GuideReference · ABIunsafe extern작은 예제로 복귀같은 명령으로 확인환경개념경계세 자료는 선택 갈래위→아래로 모두 읽는 순서 아님
Rust 학습 중 막힌 지점에 따른 자료 선택 흐름 막힌 종류를 판단해 설치와 PATH는 1장 설치 절, 개념과 용어는 공식 Book과 오프라인 문서, 에디션과 unsafe FFI 경계는 부록 E, Edition Guide, Reference로 나눈다. 경계 자료에서는 Rust 2024의 unsafe extern과 ABI, 시그니처 계약을 확인한 다음 가장 작은 예제로 돌아간다. 무엇이 막혔나?환경 · 개념 · 경계환경개념경계설치·PATH1장 설치 절rustc --version개념·용어공식 Rust Bookrustup doc --book에디션·FFI 경계Edition GuideReference2024 · 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 학습 루프

Rust · diagnostic-first · evidence loop

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

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

여섯 단계의 순환과 별도의 근거 기록원desktop과같이6단계가순환한다.결과진단→계약지도→수정선택→한번수정→동일명령실행→비교→결과진단이다.각단계에서중앙기록으로점선방향을가지며증거허브가별도의실행단계가아니다.결과·진단 읽기주 메시지 · 위치primary span계약 지도owner · moveborrow수정 하나 선택borrow · orderdesign한 번만 수정one small diff같은 명령 실행check · test · run증거 비교before · after증거 기록명령 · 변경 · 진단이전과 이후의 근거실선: 다시 첫 단계로 순환점선: 각 단계에서 근거 누적
여섯 학습 역과 하나의 증거 기록 허브 기준 명령의 결과와 주 진단을 읽고 계약을 지도화한다. 수정 하나를 선택해 한 번만 적용하고 같은 명령을 재실행한 뒤 이전 증거와 비교해 첫 단계로 돌아간다. 각 단계는 명령, 차이, 진단, 규칙을 중앙 기록에 누적한다. 결과·주 진단 읽기commandprimary span계약 지도 그리기owner · moveborrow수정 하나 선택borrow · orderdesign한 번만 수정one small diff같은 명령 재실행check · test · run증거 비교before · after증거 기록command · diffdiagnostic · 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, 서버, 저수준, 임베디드 코드에도 같은 기준으로 확장됩니다.

이 예의 조건

  • 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
  • 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.
관계도의 보충 설명
원 도표의 제목·노드·관계·조건·주석
범위원문
관계·조건 설명원 데스크톱 도표처럼 6단계가 순환한다. 결과 진단→계약 지도→수정 선택→한 번 수정→동일 명령 실행→비교→결과 진단이다. 각 단계에서 중앙 기록으로 점선이 이어지며 증거 허브는 별도의 실행 단계가 아니다.
예의 값과 변화
관찰·상황값·보충 정보변화·이유
주 진단 기록

같은 검사 명령에서 첫 관련 오류를 잡는다.

  • 입력: 현재 소스
  • 근거: 주 진단·위치
  • 먼저 재현된 오류를 계약과 연결해야 수정 대상을 좁힐 수 있다.
한 수정

소유·대여 계약 지도에서 위반을 찾아 하나만 고친다.

  • 기준: 소유/대여 계약
  • 변경: 한 가지
  • 오류 문자열만 따라 여러 곳을 동시에 바꾸지 않는다.
재검사 비교

같은 명령의 진단을 이전 근거와 비교한다.

  • 명령: 이전과 동일
  • 산출물: 남은 진단/통과 근거
  • 같은 조건에서 달라진 증거가 수정 효과를 보여 준다.

진단부터 다시 실행까지의 Rust 학습 루프

주 진단→소유/대여 계약 지도→수정 하나→같은 명령→증거 비교의 반복 작업 상태가 명시적이다.

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

Rust · diagnostic-first · evidence loop

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

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

여섯 단계의 순환과 별도의 근거 기록원desktop과같이6단계가순환한다.결과진단→계약지도→수정선택→한번수정→동일명령실행→비교→결과진단이다.각단계에서중앙기록으로점선방향을가지며증거허브가별도의실행단계가아니다.결과·진단 읽기주 메시지 · 위치primary span계약 지도owner · moveborrow수정 하나 선택borrow · orderdesign한 번만 수정one small diff같은 명령 실행check · test · run증거 비교before · after증거 기록명령 · 변경 · 진단이전과 이후의 근거실선: 다시 첫 단계로 순환점선: 각 단계에서 근거 누적
여섯 학습 역과 하나의 증거 기록 허브 기준 명령의 결과와 주 진단을 읽고 계약을 지도화한다. 수정 하나를 선택해 한 번만 적용하고 같은 명령을 재실행한 뒤 이전 증거와 비교해 첫 단계로 돌아간다. 각 단계는 명령, 차이, 진단, 규칙을 중앙 기록에 누적한다. 결과·주 진단 읽기commandprimary span계약 지도 그리기owner · moveborrow수정 하나 선택borrow · orderdesign한 번만 수정one small diff같은 명령 재실행check · test · run증거 비교before · after증거 기록command · diffdiagnostic · 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, 서버, 저수준, 임베디드 코드에도 같은 기준으로 확장됩니다.

이 예의 조건

  • 본문과 원 도표에 제시된 사례의 입력·조건을 사용합니다. 설명용 수치나 독립 비교 경로는 각 단계에 표시합니다.
  • 현재 상태·값과 전환 근거의 위치는 모든 단계에서 같습니다. 조건이 맞지 않거나 실행되지 않은 경로를 성공한 동작으로 해석하지 않습니다.

관계도의 보충 설명

원 도표의 제목·노드·관계·조건·주석
범위원문
관계·조건 설명원 데스크톱 도표처럼 6단계가 순환한다. 결과 진단→계약 지도→수정 선택→한 번 수정→동일 명령 실행→비교→결과 진단이다. 각 단계에서 중앙 기록으로 점선이 이어지며 증거 허브는 별도의 실행 단계가 아니다.
예의 값과 변화
관찰·상황값·보충 정보변화·이유
주 진단 기록

같은 검사 명령에서 첫 관련 오류를 잡는다.

  • 입력: 현재 소스
  • 근거: 주 진단·위치
  • 먼저 재현된 오류를 계약과 연결해야 수정 대상을 좁힐 수 있다.
한 수정

소유·대여 계약 지도에서 위반을 찾아 하나만 고친다.

  • 기준: 소유/대여 계약
  • 변경: 한 가지
  • 오류 문자열만 따라 여러 곳을 동시에 바꾸지 않는다.
재검사 비교

같은 명령의 진단을 이전 근거와 비교한다.

  • 명령: 이전과 동일
  • 산출물: 남은 진단/통과 근거
  • 같은 조건에서 달라진 증거가 수정 효과를 보여 준다.

이 페이지 목차

이 페이지 목차