Crate fef

Source
Expand description

This crate provides a parser implementation for the FEF format

§Versioning

This crate follows Semantic Versioning 2.0.0. To separate versioning from the standard and avoid situations where multiple versions of this crate would have to be installed in a single project to work with different versions of the standard, this crate provides different modules for different major versions of the standard. These can be enabled by feature flags.

§Adding inherent items - breaking change

This crate doesn’t consider implementing any inherent items as a breaking change - it will not increase the major version. This can however potentially break backwards compatibility, if downstream crates don’t use disambiguation syntax for calling their own implementations of structs provided by this crate or structs that implement traits provided by this crate.

It is generally considered a good practice to use disambiguation syntax if you need to add an impl to a struct from an upstream crate.

Example of bad usage, that we don’t guarantee backwards compatibility for:

struct MyConfig;

impl Config for MyConfig {
    // ...
}

impl MyConfig {
    pub fn language(&self) -> &str {
        // ...
    }
}

let config = MyConfig;

let language = config.language(); // This will break if we add a language method to the Config trait

let language = MyConfig::language(&config); // This will not break and execute your language method

Modules§

common
Functionality common across all versions of the standard
v0v0
Implementations in accordance with the v0 specification.