STUDY/Rust

Rust - 17. Cargo와 Crates.io

sinawi95 2024. 3. 19. 20:53
728x90

이건 뭘까


1. 릴리즈 프로필을 통한 빌드 커스터마이징하기

릴리즈 프로필: Cargo.toml에서 설정할수 있음

  1. dev 프로필: 개발에 적합한 기본값으로 정의
  2. release 프로필: 릴리즈용 설정을 기본값으로 정의

옵션

  • opt-level: 최적화 레벨. 0~3. 높을수록 최적화를 많이 하므로 컴파일 시간이 늘어남
    • dev: 0
    • release: 3

2. crates.io에 라이브러리 배포하기

크레이트 등기소(registry) 

  • 패키지 배포하는 곳

문서화 주석(document comment)

  • 슬래시 세 개(///)를 사용.
  • 텍스트 서식을 위한 마크다운 표기법 지원
  • 문서화할 아이템 앞에 문서화 주석을 배치하면 됨
  • cargo doc을 실행하면 문서화 주석으로부터 HTML문서를 생성할수 있음.
    • target/doc 디렉터리에 생성됨
    • cargo doc --open 을 실행하면 HTML 생성하고 브라우저에 문서를 띄워줌
  • cargo test를 실행하면 문서에 들어있던 예시 코드들을 테스트할수 있음
  • 슬래시 두 개 느낌표 하나 (//!)를 사용하면 주석을 담고 있는 아이템을 문서화함
    • 크레이트 혹은 모듈 전체에 대한 문서를 작성하는데 쓰임

공개 API 설정(Re-exports)

  • pub use를 사용해서 공개 구조를 만들수 있음
  • 내부 구조를 바꾸는게 아니라 쉽게 사용할수 있도록 추가하는 것

Crates.io 계정 설정

  • cargo login {API키}

크레이트 메타데이터 추가

  • Cargo.toml 에 추가
  • name: 이름
    • 등록된 크레이트 이름은 중복 불가임
  • version: 프로그램 빌드 버전
  • edition: 
  • description: 크레이트 설명
  • license
    • OR로 여러 라이센스 지정 가능

크레이트 배포

  • cargo publish
  • 버전 바꿔서 배포하면 새 버전으로 업데이트됨
  • 올라간 버전은 제거할수 없음
    • 비밀키 등이 업로드되면 삭제할수 없으므로 리셋하고 새로운 비밀키 사용해야함

크레이트 버전 끌어내기

  • 이미 올라간 버전은 제거할수 없지만 향후 프로젝트들이 의존성으로 추가하는 것을 방지함
  • cargo yank
    • --undo 옵션으로 다시 의존성 허용 가능

3. 대규모 작업을 위한 작업공간 (workspace) 구성하기

Cargo.toml 에 workspace 절 생성

  • package 절을 사용하지 않음
  • members에 사용할 크레이트 이름을 작성함

dependencies 절에 라이브러리 경로 추가

4. crates.io로부터 바이너리 설치하기

cargo install {패키지이름}

  • 바이너리 타겟을 가진 패키지만 설치할 수 있음

https://doc.rust-kr.org/ch14-00-more-about-cargo.html

 

https://doc.rust-lang.org/cargo/