Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

캡스톤 프로젝트: CLI 할 일 관리 도구 만들기

학습 목표: 지금까지 배운 모든 개념(구조체, 열거형, 소유권, 에러 처리, 반복자 등)을 총동원하여 실제 사용 가능한 CLI 애플리케이션을 구축합니다. 파이썬의 argparsejson 라이브러리로 만들던 도구를 Rust로 어떻게 더 안전하고 빠르게 구현하는지 직접 체험합니다.


1. 프로젝트 개요: rustdo

rustdo는 JSON 파일에 할 일을 저장하고 관리하는 간단한 CLI 도구입니다.

  • 데이터 모델: 할 일(Task)과 우선순위(Priority) 정의
  • 저장소: 로컬 JSON 파일 읽기/쓰기 (Serde 활용)
  • 명령어 처리: add, list, done, remove 등 패턴 매칭으로 구현
  • 비즈니스 로직: 반복자와 클로저를 활용한 데이터 필터링 및 가공

2. 구현 단계별 핵심 포인트

① 데이터 모델링 (구조체와 열거형)

파이썬의 @dataclassEnum 대신 Rust의 structenum을 사용하고, #[derive(Serialize, Deserialize)]를 통해 직렬화 기능을 즉시 부여합니다.

② 저장소 계층 (에러 처리)

파일이 없을 때의 처리나 JSON 파싱 에러 등을 Result<T, E>? 연산자로 우아하게 전파합니다. 파이썬의 try-except보다 명확한 흐름을 가집니다.

③ 명령어 파싱 (패턴 매칭)

사용자 입력을 match 문으로 분석하여 각 기능으로 분기합니다. 이 과정에서 Rust 특유의 '철저한 검사' 덕분에 예외적인 입력을 놓칠 리가 없습니다.

④ 비즈니스 로직 (반복자의 힘)

할 일 목록 중 완료되지 않은 것만 골라내거나(filter), 전체 개수를 세는(count) 작업 등을 반복자 체인 하나로 깔끔하게 처리합니다.


3. 프로젝트를 마치며 연습해 볼 것들

기본 기능을 완성했다면 다음 기능들을 직접 추가해 보세요:

  • 날짜 필터링: chrono 라이브러리를 사용해 마감일 기준 정렬하기
  • 색상 출력: colored 크레이트로 우선순위에 따라 터미널 색상 입히기
  • 고급 파싱: clap 라이브러리를 도입하여 본격적인 CLI 인터페이스 구축하기

💡 실무 팁: "이제 당신은 Rustacean입니다"

이 프로젝트를 무사히 마쳤다면, 당신은 단순히 Rust를 아는 파이썬 개발자가 아닙니다. 두 언어의 장단점을 명확히 이해하고, 상황에 맞는 최적의 도구를 선택할 줄 아는 숙련된 엔지니어가 된 것입니다. 축하합니다!