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§
Sourcefn list_all_aliases<T>(&self) -> Result<T>where
T: FromIterator<Alias>,
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)Sourcefn list_aliases_for_category<T, U>(&self, category: T) -> Result<U>
fn list_aliases_for_category<T, U>(&self, category: T) -> Result<U>
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)Sourcefn resolve_alias<T: ResolvesAlias>(&self, input: T) -> Result<T::Resolved>
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.