캡스톤 프로젝트: CLI 할 일 관리 도구 만들기
학습 목표: 지금까지 배운 모든 개념(구조체, 열거형, 소유권, 에러 처리, 반복자 등)을 총동원하여 실제 사용 가능한 CLI 애플리케이션을 구축합니다. 파이썬의
argparse와json라이브러리로 만들던 도구를 Rust로 어떻게 더 안전하고 빠르게 구현하는지 직접 체험합니다.
1. 프로젝트 개요: rustdo
rustdo는 JSON 파일에 할 일을 저장하고 관리하는 간단한 CLI 도구입니다.
- 데이터 모델: 할 일(Task)과 우선순위(Priority) 정의
- 저장소: 로컬 JSON 파일 읽기/쓰기 (Serde 활용)
- 명령어 처리:
add,list,done,remove등 패턴 매칭으로 구현 - 비즈니스 로직: 반복자와 클로저를 활용한 데이터 필터링 및 가공
2. 구현 단계별 핵심 포인트
① 데이터 모델링 (구조체와 열거형)
파이썬의 @dataclass와 Enum 대신 Rust의 struct와 enum을 사용하고, #[derive(Serialize, Deserialize)]를 통해 직렬화 기능을 즉시 부여합니다.
② 저장소 계층 (에러 처리)
파일이 없을 때의 처리나 JSON 파싱 에러 등을 Result<T, E>와 ? 연산자로 우아하게 전파합니다. 파이썬의 try-except보다 명확한 흐름을 가집니다.
③ 명령어 파싱 (패턴 매칭)
사용자 입력을 match 문으로 분석하여 각 기능으로 분기합니다. 이 과정에서 Rust 특유의 '철저한 검사' 덕분에 예외적인 입력을 놓칠 리가 없습니다.
④ 비즈니스 로직 (반복자의 힘)
할 일 목록 중 완료되지 않은 것만 골라내거나(filter), 전체 개수를 세는(count) 작업 등을 반복자 체인 하나로 깔끔하게 처리합니다.
3. 프로젝트를 마치며 연습해 볼 것들
기본 기능을 완성했다면 다음 기능들을 직접 추가해 보세요:
- 날짜 필터링:
chrono라이브러리를 사용해 마감일 기준 정렬하기 - 색상 출력:
colored크레이트로 우선순위에 따라 터미널 색상 입히기 - 고급 파싱:
clap라이브러리를 도입하여 본격적인 CLI 인터페이스 구축하기
💡 실무 팁: "이제 당신은 Rustacean입니다"
이 프로젝트를 무사히 마쳤다면, 당신은 단순히 Rust를 아는 파이썬 개발자가 아닙니다. 두 언어의 장단점을 명확히 이해하고, 상황에 맞는 최적의 도구를 선택할 줄 아는 숙련된 엔지니어가 된 것입니다. 축하합니다!