기본 콘텐츠로 건너뛰기

Rust를 배워보자

개인적으로 명시적으로 컴파일 되는 언어를 좋아 하고 Rust의 오너쉽(Ownership)모델이 이색적이어서 기회가 되면 Rust를 익혀 봐야지 했었다. 마침 소장하고 있는 mp3 파일들을 정리를 하던 중이라 ID3 검색기 겸 태거(Tagger)를 만들어 보기로 마음 먹었다. 대충 문법만 읽고 시작했다가 큰코 다쳤던 삽질기를 정리 해 둔다.

짧은 소감은 오너쉽 모델 때문에 코딩이 더디다. 평소의 코딩 패턴도 바뀐다. 그렇지만 컴파일만 통과하면 견고한 결과물을 얻을 수 있다. 물론, 다른 언어로 개발하면 프로그램이 견고하지 않다는 뜻은 아니다. Mutable 변수와 Immutable 변수로 선언하는데 그치지 않고 값을 넘겨 줄 때 즉, 빌려줄 때 "소유권 이전", "읽기용 참조" 그리고 "수정용 참조"로 명시 할 수 있어서 예상치 못한 데이터 변경 오류에 견고하다는 의미다.

개발 할 땐 참고 서적/사이트, 개발 툴과 정보를 얻을 수 있는 커뮤니티를 중요하게 생각 하는 편인데,

아직 Rust 관련된 책이 몇 권 없는게 아쉬웠다. 그렇지만 공식 사이트 http://rust-lang.github.io/bookhttps://doc.rust-lang.org 이 훌륭해서 개인적으로 언어를 익히기엔 충분했고,

패키지 시스템인 Cargo(https://crates.io/)가 마크다운 형식의 문서화 지원하고, Git 연동, 유닛 테스트 환경 그리고 크로스 컴파일 환경, 모듈 레지스터리 서비스 연동등을 제공한다. 물론, 빌드 스크립트도 작성 할 수 있고, 시스템 언어라서 크로스 컴파일도 지원한다. 무엇보다 사용법이 단순해서 학습곡선이 낮다는 점이 좋다.

사용해본 개발툴은 Intellij와 Visual Studio Code 두가지 인데, IntelliJ는 IDE인 만큼 리팩토링 기능이나 호출자(Caller) 보기와 같은 기능이 더 지원 되지만 많이 무거웠지만, 양쪽 모두 코드 정의 가기(Go to Definition)가 잘 동작해서 표준 “std” 모듈은 물론, 프로젝트에 사용한 모듈의 코드를 볼 수 있어 큰 불편함은 없다. 인텔리J를 통해 컴파일 하면 노트북 팬이 너무 돌아서 후반엔 가벼운 VSCode를 사용했다.

그 밖에 https://users.rust-lang.org/ 에는 매일 새글들이 올라오고 댓글도 잘 달리는 편이며, 커뮤니티 운영팀(https://www.rust-lang.org/en-US/team.html#Community-team)과 문서팀(https://www.rust-lang.org/en-US/team.html#Documentation-team)도 공식적으로 운영되고 있어서 Rust는 전반적으로 정돈되고 관리되는, 조직적인 프로젝트 느낌을 받았다.

삽질 영역을 나누어 보니 크게 아래 정도다. 파트로 나누어 정리 해 두기로,,

  • Cargo 패키지 시스템
  • Null이 없다. try~catch도 없다. Option과 Result
  • 자바가 아니다. Trait과 Generic
  • 상속을 표현 할 수 없다. enum, struct 그리고 match
  • 삽질의 연속. Ownership과 Lifetime
  • 기타. Macro, Closure

댓글