How interfaces and types are defined

Interfaces are tradionally defined by writing interface definitions via a DSL (domain specific language), or by writing interface header files. Code generators are then used to generate the necessary bindings. Code generators are called via the build system.

Rust has a powerful package management system and a powerful macro language. Sabaton embraces both these to provide a seamless mechanism to define and deploy interfaces. All interfaces are types are defined in their own library crates which are then used by the applications that refer to them.