개인적으로 명시적으로 컴파일 되는 언어를 좋아 하고 Rust의 오너쉽(Ownership)모델이 이색적이어서 기회가 되면 Rust를 익혀 봐야지 했었다. 마침 소장하고 있는 mp3 파일들을 정리를 하던 중이라 ID3 검색기 겸 태거(Tagger)를 만들어 보기로 마음 먹었다. 대충 문법만 읽고 시작했다가 큰코 다쳤던 삽질기를 정리 해 둔다. 짧은 소감은 오너쉽 모델 때문에 코딩이 더디다. 평소의 코딩 패턴도 바뀐다. 그렇지만 컴파일만 통과하면 견고한 결과물을 얻을 수 있다. 물론, 다른 언어로 개발하면 프로그램이 견고하지 않다는 뜻은 아니다. Mutable 변수와 Immutable 변수로 선언하는데 그치지 않고 값을 넘겨 줄 때 즉, 빌려줄 때 "소유권 이전", "읽기용 참조" 그리고 "수정용 참조"로 명시 할 수 있어서 예상치 못한 데이터 변경 오류에 견고하다는 의미다. 개발 할 땐 참고 서적/사이트, 개발 툴과 정보를 얻을 수 있는 커뮤니티를 중요하게 생각 하는 편인데, 아직 Rust 관련된 책이 몇 권 없는게 아쉬웠다. 그렇지만 공식 사이트 http://rust-lang.github.io/book 과 https://doc.rust-lang.org 이 훌륭해서 개인적으로 언어를 익히기엔 충분했고, 패키지 시스템인 Cargo( https://crates.io/ )가 마크다운 형식의 문서화 지원하고, Git 연동, 유닛 테스트 환경 그리고 크로스 컴파일 환경, 모듈 레지스터리 서비스 연동등을 제공한다. 물론, 빌드 스크립트도 작성 할 수 있고, 시스템 언어라서 크로스 컴파일도 지원한다. 무엇보다 사용법이 단순해서 학습곡선이 낮다는 점이 좋다. 사용해본 개발툴은 Intellij와 Visual Studio Code 두가지 인데, IntelliJ는 IDE인 만큼 리팩토링 기능이나 호출자(Caller) 보기와 같은 기능이 더 지원 되지만 많이 무거웠지만, 양쪽 모두 코드 정의 가기(Go to ...