cargo run 명령어로 코드를 컴파일 한 다음 결과 바이너리 파일을 실행하는 것처럼, cargo test 명령어는 코드를 컴파일 한 후 테스트 결과를 바이너리 파일로 실행된다. cargo test 옵션을 확인하려면 cargo test --help, cargo test 옵션이 아닌 test 바이너리의 옵션을 확인하려면 cargo test -- --help명령어를 사용할 수 있다. 직/병렬 테스트 실행하기 기본적으로 각 테스트들은 병렬적으로 실행된다. 그래서 각각의 테스트가 독립적으로 실행되도록 주의해야 한다. 테스트들을 직렬로 실행하고 싶다면 --test-threads 플래그를 사용하고 뒤에 사용할 쓰레드 개수를 적어준다. $ cargo test -- --test-threads=1 기본적으로 테스트가 ..
특성(Trait) 예전부터 글에 자주 등장했던 특성(trait)이란 단어를 알아볼 시간이 왔다. 특성(트레잇)이란 타입들이 특정 타입이 갖고 있는 동작(기능)을 다른 타입들과 함께 공유할 수 있도록 공통적으로 갖는 동작에 대하여 추상화한 것을 말한다. 제네릭 타입이 어떤 행동을 하는 타입이 될 수 있도록 특정하는 것을 trait bounds라고 한다. traits은 인터페이스(interface)와 비슷하지만, 몇몇 차이점이 존재한다. Defining a trait 타입의 행동(behavior)은 그 타입이 호출할 수 있는 메소드들로 이루어져 있다. 이에 만약 같은 메소드를 가진다면 다른 타입이라도 같은 행동을 공유한다. 트레잇을 정의한다는 것은 어떤 목적을 달성하기 위해 필요한 행동(behavior)들을..
Super로 상대 경로 시작하기 super로 상대 경로를 시작하는 것은 파일 시스템에서 .. 구문을 이용하는 것과 비슷하다. 이전의 예시에서 셰프가 잘못된 주문을 고치고 손님에게 개인적으로 가져다주는 fix_incorrect_order 함수를 만든다고 가정해보자. fn serve_order() {} mod back_of_house { fn fix_incorrect_order() { cook_order(); super::serve_order(); } fn cook_order() {} } fix_incorrect_order 함수는 back_of_house 함수 안에 있으므로 back_of_house 의 부모 모듈(crater)에게 접근하기 위해 super 키워드를 사용할 수 있다. 그리고 부모 모듈에서 se..