AliasStrategy

Trait AliasStrategy 

Source
pub trait AliasStrategy {
    // Required methods
    fn list_all_aliases<T>(&self) -> Result<T>
       where T: FromIterator<Alias>;
    fn list_aliases_for_category<T, U>(&self, category: T) -> Result<U>
       where T: AsRef<str>,
             U: FromIterator<Alias>;
    fn resolve_alias<T: ResolvesAlias>(&self, input: T) -> Result<T::Resolved>;
}
Expand description

Strategy for resolving and listing aliases.

Required Methods§

Source

fn list_all_aliases<T>(&self) -> Result<T>
where T: FromIterator<Alias>,

Get a list of all aliases

§Example
fn test_strategy<T: AliasStrategy>(strategy: &T) {
    assert_eq!(
        strategy.list_all_aliases(),
        Ok(vec![
            Alias {
                alias: "allg".into(),
                category: "all_good".into()
            },
            Alias {
                alias: "change".into(),
                category: "with_changes".into()
            },
            Alias {
                alias: "err".into(),
                category: "with_error".into()
            },
        ])
    )
}

test_strategy(&strategy)
Source

fn list_aliases_for_category<T, U>(&self, category: T) -> Result<U>
where T: AsRef<str>, U: FromIterator<Alias>,

Get a list of aliases for a specific category

§Example
fn test_strategy<T: AliasStrategy>(strategy: &T) {
    assert_eq!(
        strategy.list_aliases_for_category("all_good"),
        Ok(vec![Alias {
            alias: "allg".into(),
            category: "all_good".into()
        }])
    );
}

test_strategy(&strategy)
Source

fn resolve_alias<T: ResolvesAlias>(&self, input: T) -> Result<T::Resolved>

Resolves the alias of a type

The input must implement ‘ResolvesAlias’1.

§Example
fn test_strategy<T: AliasStrategy>(strategy: &T) {
    assert_eq!(
        strategy.resolve_alias("allg"),
        Ok(Box::from("all_good")),
    );

    assert_eq!(
        strategy.resolve_alias("mispel"),
        Ok(Box::from("mispel")),
    );
}

test_strategy(&strategy)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§