Trait aliases — simplify trait bounds. Type aliases — simplify types.
Type aliases:
1type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;23fn do_something() -> Result<()> {4 Ok(())5}
Trait aliases (nightly):
1#![feature(trait_alias)]23trait MyTrait = Send + Sync + 'static;45fn spawn<T: MyTrait>(t: T) {6 // ...7}
Manual approach:
1trait MyTrait: Send + Sync + 'static {}2impl<T: Send + Sync + 'static> MyTrait for T {}
Key: Type aliases for types, trait aliases for bounds.