러스트
Rust 실전 강좌 #1 프로젝트 설계와 clap: 서브커맨드 CLI의 뼈대 잡기
기초 강좌에서 배운 문법으로 실제 도구를 만드는 실전 8편을 시작합니다. 만들 것은 액세스 로그 분석 CLI인 loglens입니다. 왜 CLI 도구가 Rust의 대표 무대인지(단일 바이너리, 시작 속도), clap의 derive 방식으로 서브커맨드(stats, top, errors)를 열거형 하나로 선언하는 법, 자동 생성되는 --help, 그리고 8편 전체의 설계 지도까지 다루겠습니다.
Rust 기초 강좌 #9 수명과 모듈: lifetime 표기가 필요한 순간, 모듈과 크레이트까지
기초 강좌의 마지막 편입니다. 4편의 댕글링 참조 차단이 어떻게 작동했는지를 수명(lifetime)으로 설명하고, missing lifetime specifier 에러가 나는 순간과 수명 매개변수 표기의 진짜 의미(수명을 늘리는 것이 아니라 관계를 선언하는 것), 대부분 표기가 생략되는 이유를 다룹니다. 이어서 mod와 pub으로 코드를 나누는 모듈 시스템, crates.io에서 외부 크레이트를 쓰는 법, 그리고 강좌 이후의 학습 경로까지 정리하겠습니다.
Rust 기초 강좌 #8 트레이트와 제네릭: 상속 없이 공통 동작을 정의하는 법
지금까지 미뤄 온 개념을 회수하는 편입니다. 공통 동작을 정의하는 트레이트(trait)와 기본 구현, 타입을 일반화하는 제네릭과 트레이트 바운드, derive가 자동 생성하는 표준 트레이트(Debug·Clone·Copy·PartialEq), 제네릭이 런타임 비용 없이 컴파일되는 단형화, 그리고 Box<dyn Error>의 dyn이 뜻하는 동적 디스패치까지 다루겠습니다.
Rust 기초 강좌 #7 컬렉션과 이터레이터: Vec·String·HashMap과 for문을 대체하는 체인
실무 코드의 몸통인 세 컬렉션을 다룹니다. 가변 길이 배열 Vec과 인덱스 대신 get을 쓰는 이유, 왜 String은 인덱스로 접근할 수 없는지(UTF-8과 바이트·문자의 차이), HashMap과 entry API, 그리고 for 반복문을 map·filter·collect 체인으로 바꾸는 이터레이터 스타일과 지연 평가까지 다루겠습니다.
Rust 기초 강좌 #6 에러 처리: Result와 ? 연산자, panic·unwrap 사용 기준
예외(exception)가 없는 Rust의 에러 처리를 다룹니다. 실패 가능성을 반환 타입에 드러내는 Result, match 중첩을 한 글자로 줄이는 ? 연산자와 에러 전파, main이 Result를 반환하는 실용 형태, 그리고 unwrap·expect·panic을 언제 써도 되고 언제 쓰면 안 되는지의 판단 기준까지 다루겠습니다.
Rust 기초 강좌 #5 구조체와 열거형: match와 Option, null이 없는 언어의 설계
데이터를 구조화하는 두 축인 구조체(struct)와 열거형(enum)을 다룹니다. impl 블록으로 메서드를 붙이는 법, variant마다 다른 데이터를 담는 Rust 열거형의 표현력, 모든 경우를 검사했는지 컴파일러가 강제하는 match, 그리고 null 대신 "값이 없을 수 있음"을 타입으로 드러내는 Option까지, Rust 코드의 뼈대가 되는 도구들을 다루겠습니다.
Rust 기초 강좌 #4 참조와 빌림: &와 &mut, 빌림 규칙 관련 컴파일 에러 해결
소유권을 옮기지 않고 값을 사용하는 참조(&)와 가변 참조(&mut)를 다룹니다. "불변 참조는 여러 개, 가변 참조는 하나"라는 빌림 규칙이 무엇을 막는지(반복 중 수정, 데이터 레이스), cannot borrow as mutable 에러를 읽고 푸는 법, 해제된 메모리를 가리키는 댕글링 참조가 컴파일 단계에서 차단되는 구조, 그리고 &str과 슬라이스까지 다루겠습니다.
Rust 기초 강좌 #3 소유권: move가 기본인 언어, GC 없이 메모리가 정리되는 원리
Rust의 심장인 소유권을 정면으로 다룹니다. 모든 값에 소유자가 하나뿐이라는 세 규칙, 대입과 함수 호출에서 값이 이동(move)한 뒤 원래 변수를 사용할 수 없게 되는 이유, 스택에 저장되는 고정 크기 타입만 누리는 Copy, 비용이 코드에 드러나는 clone, 그리고 스코프 끝에서 자동으로 해제되는 drop까지, use-after-free가 컴파일 에러로 바뀌는 구조를 다루겠습니다.
Rust 기초 강좌 #2 변수와 타입: let과 mut, 섀도잉, 함수는 표현식으로 끝난다
불변이 기본인 let과 명시적으로 붙이는 mut의 의미부터 시작합니다. 같은 이름을 다시 선언하는 섀도잉이 왜 실무 관용구인지, 정수·부동소수점·bool·char 스칼라 타입과 오버플로 동작, 튜플과 배열, 그리고 세미콜론 하나로 문장과 표현식이 갈리는 Rust 함수의 반환 규칙까지 다루겠습니다.
Rust 기초 강좌 #1 Rust란: 배우는 이유, rustup 설치와 cargo 첫 사용
Rust가 커널부터 CLI 도구까지 빠르게 퍼진 이유로 꼽히는 "GC 없는 메모리 안전"이 무슨 뜻인지부터 시작합니다. 안전과 성능이 트레이드오프였던 기존 언어들과의 차이, rustup 한 줄 설치, cargo로 프로젝트를 만들고 실행하는 기본 사이클, 그리고 첫 컴파일 에러 메시지를 읽는 법과 강좌 전체의 지도까지 다루겠습니다.