I/O 프로젝트: 명령줄 프로그램 만들기

I/O 프로젝트: 명령줄 프로그램 만들기

이번 챕터는 지금까지 배운 여러 기술을 한데 모아 복습하고, 표준 라이브러리의 기능 몇 가지를 더 살펴보는 시간이에요. 파일과 명령줄 입출력을 다루는 명령줄 도구를 직접 만들어 보면서, 지금까지 손에 익힌 Rust 개념들을 실제로 써 보는 거죠.

Rust는 빠르고 안전하며 실행 파일 하나로 나오고 크로스 플랫폼을 지원하다 보니, 명령줄 도구를 만들기에 참 좋은 언어예요. 그래서 우리 프로젝트에서는 고전적인 명령줄 검색 도구 grep(regular expression을 전역적으로 검색하고 출력하는 도구)의 우리만의 버전을 만들어 볼게요. 가장 단순한 사용 사례에서 grep은 지정된 파일에서 지정된 문자열을 검색합니다. 그러려면 grep은 파일 경로와 문자열을 인자로 받아요. 그런 다음 파일을 읽고, 그 파일 안에서 문자열 인자를 포함한 줄을 찾아 출력합니다.

만들다 보면 다른 명령줄 도구들이 쓰는 터미널 기능을 우리 도구에도 적용하는 법을 보여드릴게요. 환경 변수 값을 읽어 사용자가 도구의 동작을 설정하게 하고, 오류 메시지는 표준 출력(stdout) 대신 표준 오류 콘솔 스트림(stderr)으로 출력해서, 예를 들면 사용자가 성공한 출력은 파일로 리다이렉트하면서도 오류 메시지는 화면에서 계속 볼 수 있게 만들 거예요.

Rust 커뮤니티의 앤드류 갤런트(Andrew Gallant)는 이미 완성도 높고 아주 빠른 grep 버전인 ripgrep을 만들어 두었어요. 우리 버전은 그에 비하면 꽤 단순하지만, 이 챕터를 거치면 ripgrep 같은 실제 프로젝트를 이해하는 데 필요한 밑바탕 지식을 어느 정도 갖추게 됩니다.

grep 프로젝트에는 지금까지 배운 개념들이 여러 개 어우러져 들어가요:

  • 코드 조직화 (7장)
  • 벡터와 문자열 사용 (8장)
  • 오류 처리 (9장)
  • 적절한 곳에서 트레이트와 라이프타임 사용 (10장)
  • 테스트 작성 (11장)

클로저, 반복자, 트레이트 객체도 간단히 소개할 건데, 이들은 13장과 18장에서 자세히 다룰 예정이에요.

출처: The Rust Book

더 알아보기 (Learn more)