include_cargo_toml2

Macro include_toml2

source
include_toml2!() { /* proc-macro */ }
Expand description

Parse Cargo.toml at compile time.

§TOML to Rust conversion

§Example

Keys to index Cargo.toml are parsed as string literals and array / table indexes are parsed as integer literals:

use include_cargo_toml2::include_toml2;

assert_eq!(
    include_toml2!("package"."version"),
    "0.3.0"
);
assert_eq!(
    include_toml2!("package"."name"),
    "include-cargo-toml2"
);
// indexing array with literal 2
assert_eq!(
    include_toml2!("package"."keywords".2),
    "Cargo-toml"
);
assert_eq!(
    include_toml2!("lib"."proc-macro"),
    true
);

Because TOML’s arrays and tables do not work like Vec and HashMap, tuples are used.

use include_cargo_toml2::include_toml2;

assert_eq!(
    include_toml2!("package"."keywords"),
    ("macro", "version", "Cargo-toml", "compile-time", "parse")
);

Leading or trailing dots are not allowed:

ⓘ
use include_cargo_toml::include_toml;

let this_fails = include_toml!(."package"."name");
let this_fails_too = include_toml!("package"."name".);