반응형
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 모든 상용구없이화물의 환경을 많이 활용 화 도움이됩니다.
반응형
'IT' 카테고리의 다른 글
XSL에서 'call-template'과 'apply-templates'의 차이점은 무엇입니까? (0) | 2020.07.24 |
---|---|
Google Espresso 또는 Robotium (0) | 2020.07.24 |
정수 (0)를 잡는 방법? (0) | 2020.07.24 |
유효한 XML 파일에 XML 선언이 필요 받습니까? (0) | 2020.07.24 |
C #에서 이벤트를 명시 적으로 제거해야합니까? (0) | 2020.07.24 |