Crate include_optional

Crate include_optional 

Source
Expand description

§include_optional

MSRV: 1.88


Note: This crate has a known bug in regards to proc-macro caching. If an included file does not exist and a macro from this crate returns None, this result is cached forever. The macro isn’t reevaluated when the file is added later. A fix for this is currently not possible in Stable Rust.

If you are running Nightly Rust, you can enable the nightly feature. With this, this crate makes use of the unstable track_path feature that is necessary in order to fix this. Otherwise, you will have to call cargo clean after adding an included file to force reevaluation.


This crate allows you to optionally include a file as a Option. This crate supports the complete include_X! macro family (include_bytes!, include! and include_str!).

§Installation

Add this to your Cargo.toml:

[dependencies]
include_optional = "1.0"

§Example

This includes some metadata from a file, falling back to default metadata if the file is missing:

use include_optional::include_str_optional;
let metadata:  &'static str = include_str_optional!("./metadata_files/file_exists.txt" ).unwrap_or("default metadata string");

Macros§

include_bytes_optional
Wraps include_bytes! inside Option.
include_optional
Wraps include! inside Option.
include_str_optional
Wraps include_str! inside Option.