[−][src]Macro cargo_meta_proc::metadata
metadata!() { /* proc-macro */ }
Macro for accessing data from the package.metadata
section of the Cargo manifest
Arguments
key
- A string slice of a dot-separated path to the TOML key of interest
Example
Given the following Cargo.toml
:
[package] name = "MyApp" version = "0.1.0" [package.metadata] copyright = "Copyright (c) 2019 ACME Inc."
And the following main.rs
:
#![feature(proc_macro_hygiene)] use std::env; use cargo_meta::package_metadata; pub fn main() { println!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")); println!("{}", package_metadata!("copyright")); }
Invoking cargo run
will produce:
MyApp 0.1.0 Copyright (c) 2019 ACME Inc.
TOML Support
This macro only supports static data:
- Integers
- Floating-point numbers
- Booleans
- Keys of tables nested below the
package.metadata
section of the manifest (if the value is a supported type) - Entire TOML arrays
Array Example
Given the following Cargo manifest:
[package.metadata.arrays] some_array = [ 1, 2, 3 ]
This is legal:
static ARR: [3; i64] = package_metadata!("arrays.some_array");
It does not currently support accessing TOML array elements directly, though this
is possible. TOML tables will not be possible without a statically keyed hashmap such
as the one provided by the phf
crate. Support may be added if/when Rust can
support static hashmaps with compile-time key errors.