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

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

이 장은 지금까지 배운 여러 기술을 다시 활용하면서, 표준 라이브러리의 몇 가지 기능을 추가로 탐색하는 장입니다. 파일과 명령줄 입출력을 다루는 커맨드라인 도구를 직접 만들어 보며, 여러분이 이제 익숙해진 러스트 개념들을 실제로 연습해 보겠습니다.

러스트는 빠르고 안전하며, 하나의 단일 바이너리로 배포할 수 있고, 여러 플랫폼을 지원하기 때문에 커맨드라인 도구를 만들기에 아주 적합한 언어입니다. 그래서 이번 프로젝트에서는 고전적인 명령줄 검색 도구 grep (globally search a regular expression and print) 의 축소판을 직접 만들어 보겠습니다. 가장 단순한 사용 사례에서 grep 은 특정 파일에서 특정 문자열을 찾습니다. 이를 위해 grep 은 파일 경로와 문자열을 인수로 받고, 파일을 읽은 뒤 그 문자열을 포함하는 줄을 찾아 출력합니다.

이 과정에서 많은 다른 커맨드라인 도구들이 사용하는 터미널 기능도 함께 살펴봅니다. 환경 변수 값을 읽어 사용자가 도구의 동작을 설정하게 하고, 성공적인 출력은 파일로 리다이렉트하더라도 에러 메시지는 화면에 보이도록, 표준 출력(stdout) 대신 표준 에러(stderr) 에 에러 메시지를 출력하는 방법도 다룹니다.

러스트 커뮤니티의 Andrew Gallant 는 이미 ripgrep 이라는 이름의, 완전한 기능을 갖춘 아주 빠른 grep 구현을 만들어 두었습니다. 그에 비하면 우리가 만드는 버전은 꽤 단순하겠지만, 이 장은 ripgrep 같은 실제 프로젝트를 이해하는 데 필요한 배경 지식을 제공합니다.

이번 grep 프로젝트는 지금까지 배운 여러 개념을 함께 사용합니다.

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

또한 클로저, 반복자, 트레이트 객체도 짧게 소개할 텐데, 이는 각각 13장18장에서 자세히 다룹니다.