Loads configuration files (.yaml/.yml/.toml) into a structure for easy/statically typed usage.
Basic usage:
extern crate amethyst_config;
use Config;
config!
Config
is the name of the rust struct that will be generated by the macro.
It can be anything as long as it would be a valid struct in its context,
e.g. no other structs by the same name.
The inner fields of Config
can be summed up as:
name: type = default,
The field name will be looked up when attempting to load from a .yml/.yaml file. If it is found, then the value will be converted from the formats type to a Rust type and assigned to the field.
If a field is missing from the config file or has a value of a wrong type,
the Rust field will fall back to the default
value.
In addition to basic types, any struct created through the config!
macro
will automatically implement Serialize
and Deserialize
from the serde
library, meaning you can nest configuration structs inside each other.
# extern crate amethyst_config;
# use Config;
config!
config!
#
Documentation and commenting
Normally when constructing a config, you might add a small description as to what the fields will be used for and possibly their default values, if they have any.
#
# extern crate amethyst_config;
# use Config;
config!
#
If the macro has problems expanding, then you may want to check whether you
have the documentation on the line before the field and that you have the
pub
identifier before the field name.