IT

Rust 프로그램이화물에서 메타 데이터에 어떻게 접근 할 수 있습니까?

lottoking 2020. 7. 24. 07:28
반응형

Rust 프로그램이화물에서 메타 데이터에 어떻게 접근 할 수 있습니까?


패키지의 Rust 코드에서 Cargo 패키지의 메타 데이터 (예 : 버전)에 어떻게 액세스 할 수 있습니까? 의 경우 표준 필자 --version플래그 를 갖고 싶은 명령 줄 도구를 작성 중이며 패키지 버전을 읽는 구현을 원 Cargo.toml하므로 두 곳에서 유지할 필요가 없습니다. 프로그램에서 카고 메타 데이터에 액세스하려는 다른 이유가 있다고 생각할 수 있습니다.


Cargo는 환경 변수를 통해 일부 메타 데이터를 컴파일러에 전달합니다.이 목록은 Cargo 문서 페이지 에서 사용할 수 있습니다 .

컴파일러 환경은 카고 코드로 채워집니다 . 이 코드는 이전 버전부터 더 복잡해 변수 목록은 동적 일 수 있으므로 더 이상 명확하지 않습니다. 그러나 다음 변수가 문서의 목록에서 설정됩니다.fill_env

CARGO_MANIFEST_DIR
CARGO_PKG_AUTHORS
CARGO_PKG_DESCRIPTION
CARGO_PKG_HOMEPAGE
CARGO_PKG_NAME
CARGO_PKG_REPOSITORY
CARGO_PKG_VERSION
CARGO_PKG_VERSION_MAJOR
CARGO_PKG_VERSION_MINOR
CARGO_PKG_VERSION_PATCH
CARGO_PKG_VERSION_PRE

env!()매크로를 사용하여 환경 변수에 액세스 할 수 있습니다 . 프로그램의 버전 번호를 삽입하려는 다음을 수행하십시오.

const VERSION: &'static str = env!("CARGO_PKG_VERSION");

// ...

println!("MyProgram v{}", VERSION);

카고 없이도 프로그램을 선택하여 다음을 사용할 수 있습니다 .option_env!()

const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION");

// ...

println!("MyProgram v{}", VERSION.unwrap_or("unknown"));

내장 -crate 모든 상용구없이화물의 환경을 많이 활용 화 도움이됩니다.

참고 URL : https://stackoverflow.com/questions/27840394/how-can-a-rust-program-access-metadata-from-its-cargo-package

반응형